<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.paparazziuav.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jkg</id>
	<title>PaparazziUAV - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.paparazziuav.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jkg"/>
	<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/wiki/Special:Contributions/Jkg"/>
	<updated>2026-04-08T11:49:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Pixhawk&amp;diff=24324</id>
		<title>Pixhawk</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Pixhawk&amp;diff=24324"/>
		<updated>2019-10-07T19:00:53Z</updated>

		<summary type="html">&lt;p&gt;Jkg: fix github link to iris airframe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; width: 45%; overflow: hidden&amp;quot;&amp;gt;[[File:Pixhawk 1 v2.4.jpg|thumb|Pixhawk 1 v2.4]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Paparazzi on Pixhawk=&lt;br /&gt;
&lt;br /&gt;
The Pixhawk is an open hardware autopilot that was originally developed by ETHZ in the [https://pixhawk.ethz.ch/ PIXHAWK project]. Paparazzi now supports the Pixhawk and the firmware can be uploaded through the orignal PX4 custom bootloader, which happens directly through the USB port of the Pixhawk. This means that it is possible to easily switch between the Paparazzi AP and other projects that support the Pixhawk hardware (i.e. PX4 and APM). &lt;br /&gt;
&lt;br /&gt;
It is also possible to directly upload to the Pixhawk by means of the JTAG port, but this is not recommended as it involves soldering and permanently removes the PX4 bootloader (which means reverting to PX4 or APM firmware is complicated). Therefor, this wiki focuses on flashing through the PX4 bootloader.&lt;br /&gt;
&lt;br /&gt;
An step-by-step example on flying Paparazzi with a Pixhawk can be found on the [[Iris]] page.&lt;br /&gt;
&lt;br /&gt;
=Intro=&lt;br /&gt;
&lt;br /&gt;
This page is intended as a guide on how to get the Paparazzi autopilot running on a Pixhawk board. For the specifications and pin-out details we recommend to look at the [https://pixhawk.org/modules/pixhawk Pixhawk site]. Details on how to flash the board with Paparazzi can be found [[#Flashing|below]]. A complete step by step example on how to get a drone flying with Paparazzi + Pixhawk is provided with the [[Iris]] drone. A list of features that are currently (not) supported in Paparazzi can be found [[#Features|here]].&lt;br /&gt;
&lt;br /&gt;
The Pixhawk consists of the PX4IO (designed around a stm32f1) and the PX4FMU (designed around a stm32f4), which are glued together in one pcb. Uploading of the autopilot (which runs only on the PX4FMU) happens directly from computer over USB to the PX4FMU, by means of the PX4 bootloader. In the original PX4 and APM Pixhawk software, the compiled PX4IO code (which runs the Fly By Wire) is embedded with the PX4FMU code, and the PX4FMU code would flash the PX4IO board at startup. But, in Paparazzi, the PX4IO is flashed from the computer --&amp;gt; USB -&amp;gt; PX4FMU --&amp;gt; internal UART --&amp;gt; PX4IO, directly from Paparazzi Center. This means PX4IO board can be flashed without changing the autopilot, and vice versa.&lt;br /&gt;
&lt;br /&gt;
=Getting started=&lt;br /&gt;
&lt;br /&gt;
In short, the steps you'll need to run through are roughly the following:&lt;br /&gt;
&lt;br /&gt;
*1. Define your aircraft and settings for the Pixhawk (e.g. see the [https://github.com/paparazzi/paparazzi/blob/master/conf/airframes/tudelft/iris_indi.xml Iris airframe] )&lt;br /&gt;
*2. Connect the Pixhawk via USB to your computer, and upload the AP firmware&lt;br /&gt;
*3. Replug the USB, and upload the FBW code. Replug USB again.&lt;br /&gt;
&lt;br /&gt;
Details on steps 2 and 3 can be found in [[#Flashing|Flashing]]. Details on step 1 can be found [[#Airframe config|further below]].&lt;br /&gt;
&lt;br /&gt;
=Flashing=&lt;br /&gt;
[[File:Build AP.jpg|thumb|Figure 2; building the AP]]&lt;br /&gt;
[[File:Upload AP.jpg|thumb|Figure 3; flashing the AP]]&lt;br /&gt;
[[File:Build FBW.jpg|thumb|Figure 4; building the FBW]]&lt;br /&gt;
[[File:Upload FBW.jpg|thumb|Figure 5; flashing the FBW]]&lt;br /&gt;
&lt;br /&gt;
In order to flash the Pixhawk, both the AP (AutoPilot on the PX4FMU)  and the FBW (Fly By Wire on the PX4IO) have to be flashed. Paparazzi uses the default PX4 bootloader to upload and flash the code in both systems, but the FBW is flashed through the AP. This means that at least for the first time, the AP has to be flashed with Paparazzi first.&lt;br /&gt;
&lt;br /&gt;
* To flash the AP (See figure 2 and 3):&lt;br /&gt;
** Select your aircraft (1).&lt;br /&gt;
** Select the AP (2).&lt;br /&gt;
** Click the build button (3). &lt;br /&gt;
** After the compilation was completed successfully (4), plug in the USB cable to computer and the Pixhawk.&lt;br /&gt;
** After 5 seconds click upload (5). &lt;br /&gt;
** You should see &amp;quot;upload successful&amp;quot; (6). &lt;br /&gt;
&lt;br /&gt;
* To flash the FBW  (See figure 4 and 5): &lt;br /&gt;
** Select FBW (7).&lt;br /&gt;
** Click the build button (8).&lt;br /&gt;
** After the compilation was completed successfully (9), plug in the USB cable to computer and the Pixhawk.&lt;br /&gt;
** Between 10 to 20 seconds after replugging, click upload (10). &lt;br /&gt;
** You should see &amp;quot;upload successful&amp;quot; (11). &lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* After flashing the FBW, it is required to re-power the Pixhawk. &lt;br /&gt;
* The flashing of the FBW is disabled 20 seconds after power up. Re-power to reset the time. &lt;br /&gt;
* If the Pixhawk is in view, one can monitor the system (B/E) led of the autopilot (left, FMU side). After 10 seconds, the system led will blink slower, meaning the autopilot has booted and the FBW can be flashed. After 20 second, the system led will blink slow (1Hz), meaning the FBW cannot be flashed any more.&lt;br /&gt;
* Whether the current code is APM, PX4 or Paparazzi, the flashing steps remain the same.&lt;br /&gt;
* In case of problems such as in figure 6, most of the time it can be solved by re-powering the Pixhawk (e.g. re-plugging the USB, and removing the battery), wait for 10 seconds for the computer to recognize the USB device, and click the upload button again.&lt;br /&gt;
&lt;br /&gt;
[[File:Upload problems.jpg|thumb|Figure 6; upload problems]]&lt;br /&gt;
&lt;br /&gt;
=Airframe config=&lt;br /&gt;
&lt;br /&gt;
In order to fly a drone with the Pixhawk system in paparazzi, some Pixhawk specific configuration is required. &lt;br /&gt;
&lt;br /&gt;
* Define seperate &amp;lt;firmware&amp;gt;'s for both the fbw and the ap:&lt;br /&gt;
{{Box Code|conf/airframes/&amp;lt;yourairframe&amp;gt;.xml|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;ap&amp;quot; board=&amp;quot;px4fmu_2.4&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
And:&lt;br /&gt;
{{Box Code|conf/airframes/&amp;lt;yourairframe&amp;gt;.xml|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;fbw&amp;quot; board=&amp;quot;px4io_2.4&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Configure the interMCU communication to use UART 6 at the AP:&lt;br /&gt;
{{Box Code|conf/airframes/&amp;lt;yourairframe&amp;gt;.xml|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;module name=&amp;quot;intermcu&amp;quot; type=&amp;quot;uart&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;configure name=&amp;quot;INTERMCU_PORT&amp;quot; value=&amp;quot;UART6&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;configure name=&amp;quot;INTERMCU_BAUD&amp;quot; value=&amp;quot;B1500000&amp;quot; /&amp;gt; &amp;lt;!-- This is only during first 10s start up, afterwards it is set to 230400--&amp;gt;&lt;br /&gt;
&amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
And at the FBW:&lt;br /&gt;
{{Box Code|conf/airframes/&amp;lt;yourairframe&amp;gt;.xml|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;INTERMCU_LOST_CNT&amp;quot; value=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;intermcu&amp;quot; type=&amp;quot;uart&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;configure name=&amp;quot;INTERMCU_PORT&amp;quot; value=&amp;quot;UART2&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;configure name=&amp;quot;INTERMCU_BAUD&amp;quot; value=&amp;quot;B1500000&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
Configuration of the baud at 1500000 is strongly recommended, as this will remain backwards compatible with the PX4 code and bootloader. However, in Paparazzi the baud rate is slowed down to 230400 10s after start up, as the Pixhawk hardware actually does not seem to support flawless data transfers at those speeds. At least not in Paparazzi.&lt;br /&gt;
*Define the IMU to be:&lt;br /&gt;
{{Box Code|conf/airframes/&amp;lt;yourairframe&amp;gt;.xml|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;module name=&amp;quot;imu&amp;quot; type=&amp;quot;px4fmu_v2.4&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
Which uses the l3gd20 gyro and the lsm303d accelero. The Pixhawk has two IMU's, so alternatively you can also use the MPU6000 IMU:&lt;br /&gt;
{{Box Code|conf/airframes/&amp;lt;yourairframe&amp;gt;.xml|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;module name=&amp;quot;imu&amp;quot; type=&amp;quot;mpu6000&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
*Add the px4_flash module:&lt;br /&gt;
{{Box Code|conf/airframes/&amp;lt;yourairframe&amp;gt;.xml|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;modules main_freq=&amp;quot;512&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;module name=&amp;quot;px4_flash&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;configure name=&amp;quot;PX4IO_UART&amp;quot; value=&amp;quot;uart6&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/module&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
This enables uploading through the PX4 bootloading and activates the usb-serial device after startup.&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
&lt;br /&gt;
The features that are currently supported by Paparazzi are the following:&lt;br /&gt;
*The dual processor setup (main stm32f4 and co stm32f1 processor), in a AP (AutoPilot) + FBW (Fly By Wire)&lt;br /&gt;
*Dual IMU (selectable from airframe config)&lt;br /&gt;
**MPU6000, 3axis acc + gyro + magneto&lt;br /&gt;
**LSM303 3-axis acc + magneto, L3G 3-axis gyro&lt;br /&gt;
*External GPS + Magneto&lt;br /&gt;
*8+6 pwm outputs (8 on FBW, 6 on AP)&lt;br /&gt;
*Arm button led denotes mode info&lt;br /&gt;
*Spektrum RC, including binding through software&lt;br /&gt;
*PPM RC&lt;br /&gt;
&lt;br /&gt;
The features that are not yet supported by Paparazzi are the following:&lt;br /&gt;
*The multicolor LED&lt;br /&gt;
*The buzzer&lt;br /&gt;
*The on-board arm button&lt;br /&gt;
*The SD card SDIO &lt;br /&gt;
*RC downlink (e.g. gps info, battery info)&lt;br /&gt;
&lt;br /&gt;
=Videos=&lt;br /&gt;
Paparazzi UAV Pixhawk tutorial videos - by the [http://mavlab.lr.tudelft.nl/ TU Delft MAVLab] &amp;lt;br&amp;gt;&lt;br /&gt;
{{#ev:youtubeplaylist|PL_KSX9GOn2P-CVsy-lRSHAnUwVF9wI_pZ}} &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=20366</id>
		<title>Installation/MacOSX</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=20366"/>
		<updated>2015-09-22T21:04:04Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Installing from Source (Homebrew/Opam) */ added explicit link to directions for getting source code from github&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Installation&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Update on OS X installation: Currently, arm-none-eabi-gdb on 10.6 should be broken (gcc-arm-embedded can be compiled by hand if required without python support, or installing python2.7 as a framework from a dmg might work).'''&lt;br /&gt;
&lt;br /&gt;
'''(Feb. 1, 2014) Current OS X limitations:'''&lt;br /&gt;
* '''10.6.* requires some manual effort to properly install gcc-arm-embedded, email the mailing list if help required  (gcc-arm-embedded can be compiled by hand if required without python support, or installing python2.7 as a framework from a dmg might work)'''&lt;br /&gt;
* '''There is no cross compiler for the ARDrone2.'''&lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
This page describes the installation of paparazzi on a MacOS X.&lt;br /&gt;
&lt;br /&gt;
There are not as many MacOS X users as there are Linux users. We are always looking for more people to help with the effort of maintaining the OSX port. If you are a frequent user of OS X and understand the underpinnings we are looking for an official OSX maintainer at the moment. Let us know on gitter: https://gitter.im/paparazzi/discuss&lt;br /&gt;
&lt;br /&gt;
Presently it is known that Paparazzi will install on OSX versions 10.6.*, 10.7.*, 10.8.*, 10.9.*, 10.10.*.&lt;br /&gt;
&lt;br /&gt;
There are a few legacy installation approaches that might work on older OS X versions but are known not to work on the current Mac OS X. They all can be found on the [[Installation/MacOSX-legacy]] page.&lt;br /&gt;
&lt;br /&gt;
= Installing from Source (Homebrew/Opam) =&lt;br /&gt;
&lt;br /&gt;
Note: Macports used to conflict with homebrew. According to the homebrew website it is not the case any more as homebrew overrides the environment variables to have a pristine environment as if macports or fink were not installed on the system. It is not confirmed that opam does the same, so it probably is still a good idea to not have macports or fink installed simultanously with homebrew.&lt;br /&gt;
&lt;br /&gt;
# Install [http://xquartz.macosforge.org/landing/ XQuartz].&lt;br /&gt;
# Add XQuartz libraries to pkg-config search path by adding the following line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig&amp;lt;/source&amp;gt;&lt;br /&gt;
to your ~/.profile, ~/.bashrc, ~/.zshrc.local or similar. Note: You have to restart your terminal for the variable to be set, or you execute the export manually in your terminal by pasting the line and pressing enter.&lt;br /&gt;
# Install [http://brew.sh/ homebrew].&lt;br /&gt;
# Not all packages are yet part of the official homebrew repository (like ivy-c or jsbsim) this is why you might want to run the installation in two steps using the official repository and then [paparazzi homebrew tap https://github.com/paparazzi/homebrew-paparazzi].&lt;br /&gt;
## Install the packages included in homebrew: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;brew install git coreutils gnu-sed gtk+ libglade libgnomecanvas sdl libusb libusb-compat gsl opam wget dfu-util&amp;lt;/source&amp;gt;&lt;br /&gt;
## Add paparazzi tap: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;brew tap paparazzi/homebrew-paparazzi&amp;lt;/source&amp;gt;&lt;br /&gt;
## Install the remaining packages: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;brew install ivy-c jsbsim&amp;lt;/source&amp;gt; Note: We provide these packages as a tap but the hope is to eventually include them in the official homebrew repository.&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;opam init&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;opam pin add paparazzi-dev https://github.com/paparazzi/paparazzi-portability-support.git&amp;lt;/source&amp;gt;&lt;br /&gt;
# Install [https://launchpad.net/gcc-arm-embedded GCC ARM embedded].&lt;br /&gt;
## Download the gcc-arm-none-eabi-version.tar.bz2 from the website.&lt;br /&gt;
## Extract it into your home directory: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd ~/&amp;lt;/source&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;tar xfvj ~/Downloads/gcc-arm-none-eabi-*.tar.bz2&amp;lt;/source&amp;gt;&lt;br /&gt;
## Add the bin directory to your PATH environment variable by adding an export to your .profile or .bashrc or .zshrc.local or similar. &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;echo export PATH=$(echo ~/gcc-arm-none-eabi-* | tr ' ' '\n' | sort -r | head -n 1 )/bin:\$PATH &amp;gt;&amp;gt; ~/.profile&amp;lt;/source&amp;gt;&lt;br /&gt;
# Now you should be able to [[Installation#Getting_the_Source_Code|clone the paparazzi repository]] and run make, and execute ./paparazzi&lt;br /&gt;
&lt;br /&gt;
This process is tested and is working on Mac OS Yosemite 10.10.2 ( [[User:Esden|Esden]] ([[User talk:Esden|talk]]) 16:16, 16 March 2015 (PDT) )&lt;br /&gt;
&lt;br /&gt;
Note: If you are getting the error &amp;quot;Fatal error: exception Gtk.Error(&amp;quot;GtkMain.init: initialization failed\nml_gtk_init: initialization failed&amp;quot;)&amp;quot;, try starting ./paparazzi inside of the XQuartz X11 terminal.&lt;br /&gt;
&lt;br /&gt;
=Running Paparazzi=&lt;br /&gt;
 &lt;br /&gt;
Please see [[Installation]] for details on running Paparazzi, downloading source code from GitHub and updating software.&lt;br /&gt;
&lt;br /&gt;
Paparazzi can be started in the usual way&lt;br /&gt;
 cd ~/paparazzi&lt;br /&gt;
 ./paparazzi&lt;br /&gt;
&lt;br /&gt;
=== Changing the GTK look and feel ===&lt;br /&gt;
&lt;br /&gt;
Run /opt/local/bin/switch2 to select a different theme.&lt;br /&gt;
More detailed instructions can be found at http://gtk.php.net/manual/en/html/tutorials/tutorials.installation.macosx-stepbystep.html&lt;br /&gt;
&lt;br /&gt;
Additional themes can be downloaded from http://art.gnome.org/themes/gtk2&lt;br /&gt;
&lt;br /&gt;
A good choice is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;switch2 /opt/local/share/themes/ClearlooksClassic/&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another theme selector with a little bit better preview option is &amp;quot;gtk-chtheme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== USB Drivers for Telemetry ===&lt;br /&gt;
&lt;br /&gt;
No drivers need to be installed in order to program either the STM32 based or LPC2148 based autopilot boards (ie TINY, TWOG, Booz, Lisa/L, Lisa/M) using a USB port. However telemetry between the vehicle and ground control station requires a modem. On an Apple Mac this will generally be connected to a USB port. Whatever modem is used it will be necessary to load drivers that allow Paparazzi to communicate with the modem. It is not possible to describe all possible modems and their configuration. However the most commonly used chipset for USB to serial communication is produced by FTDI. Below is described the installation of the FTDI drivers. This can be used as a guide for installing drivers for modems using other chipsets.   &lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
FTDI drivers can be downloaded from [http://www.ftdichip.com/Drivers/VCP.htm FTDI]&lt;br /&gt;
&lt;br /&gt;
The device will probably become available as something like /dev/tty.usbserial-000013FD when connected. Note that different USB ports get different addresses. When connecting to another port the same device came up as /dev/tty.usbserial-000014FA&lt;br /&gt;
&lt;br /&gt;
Since Paparazzi is currently configured to use /dev/ttyUSB0 it's easiest to just create a link to the required device.&lt;br /&gt;
# Remove all USB devices from the computer and run the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; hopefully this will not list anything&lt;br /&gt;
# Plug in your radio and repeat the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; this should now list the serial port that the radio has been connected to. In my case I get&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Next we need to create a symbolic link to the tty.usbserial device listed to /dev/ttyUSB0 in my case the command is &amp;lt;code&amp;gt;sudo ln -s /dev/tty.usbserial-000013FD /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
# To check that everything is correct run the first command again &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; and you should get something like this&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&lt;br /&gt;
#: lrwxr-xr-x  1 root  wheel         0 20 Jan 14:42 /dev/ttyUSB0 -&amp;gt; /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the FTDI driver (kernel extension) is loaded it takes over for all FTDI connections. This means that it will not be possible to program the Lisa/L or Lisa/M boards while the driver is loaded.&lt;br /&gt;
&lt;br /&gt;
To unload the driver use the command&lt;br /&gt;
 sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
This should not give an error. if it does then try again a few times after quitting programs that may have used the connection. If the driver still fails to unload then a reboot may be required.&lt;br /&gt;
&lt;br /&gt;
When it comes time to connect the modem again you'll again need the driver loaded. This can be done with the complementary command&lt;br /&gt;
 sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
&lt;br /&gt;
=== Workaround for Issues with errors (Device busy) when trying to program a Lisa/L ===&lt;br /&gt;
====Programming the Lisa on OS X====&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
The &amp;quot;default&amp;quot; vendor id and product id for the ftdi device on Lisa is the same one used by all the manufacturers of clone usb-serial interfaces. This isn't an issue on Linux because of the udev rules file we use does not load the ftdi drivers for lisas programming interface. Windows and Mac OS X don't use this file so they can only use vendor id and product id. &lt;br /&gt;
So as soon as you plug in Lisa they load USB-&amp;gt;serial port drivers for the two ports they believe are on Lisa causing a conflict. The programming of Lisa happens through a different mechanism and does not want the programming interface of Lisa to be taken by the FTDI driver which has already been loaded. For OS X there is a hack we can do that makes it better until we can get vendor and product ids sorted out. It involves modifying the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file. We change it so only the first of the two serial interfaces is loaded. The second is not as it is the programming interface.&lt;br /&gt;
&lt;br /&gt;
The File (edit with a text editor):&lt;br /&gt;
 /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist&lt;br /&gt;
&lt;br /&gt;
Here is a diff between a &amp;quot;vanilla OS X&amp;quot; and one that has been modified (Essentially below was removed):&lt;br /&gt;
 quadzilla:Contents root# diff ~/Info.plist Info.plist &lt;br /&gt;
&amp;lt;source lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
 1784,1805d1783&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232C_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
 1830,1853d1807&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232H_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bcdDevice&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1792&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have edited the file&lt;br /&gt;
 - sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
 - sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
To reload the driver or you can just reboot.&lt;br /&gt;
&lt;br /&gt;
It is expected as Paparazzi moves to supporting more operating systems that unique product and vendor ids will be obtained thus removing the need for this step.&lt;br /&gt;
&lt;br /&gt;
==Installing FlightGear==&lt;br /&gt;
FlightGear has been packaged for use on OS X. This package can be downloaded from:&lt;br /&gt;
http://www.flightgear.org/download/&lt;br /&gt;
&lt;br /&gt;
There are several packages available. Recently, FlightGear 3.0 was released. A binary for OS X is available, and seems to work properly on Maverics (OS X 10.9.2). Follow the directions [http://www.flightgear.org/download/main-program/ here] for installation. Additional documentation can be found  [http://macflightgear.sourceforge.net/home/documents/ here].&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_launchgui_OSX_pprzoptions.png|thumb|350px|Screenshot of FlightGear launch gui in OS X with options for visualizing Paparazzi simulations]]&lt;br /&gt;
Once FlightGear is installed, the GUI launcher can be used to set common options. By clicking on the Advanced Features arrow, one can gain access to many more options as well as an interface to specify command line options (the Others tab). This is where one can specify the flight dynamics model and network connectivity required for visualizing Paparazzi simulations as described on the [[Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In Paparazzi Center, add to the simulator command the &amp;lt;tt&amp;gt;--fg&amp;lt;/tt&amp;gt; option plus the IP address of the machine running flightgear in this case the loopback interace is used as Flightgear and Paparazzi are running on the same machine:&lt;br /&gt;
 .../sw/simulator/pprzsim-launch --aircraft TJ1 -t sim --boot --norc --fg_host 127.0.0.1&lt;br /&gt;
Note TJ1 is the name of the aircraft you must substitute this with the name of your aircraft.&lt;br /&gt;
* Launch Flight Gear with the following set in the others tab under advanced settings:&lt;br /&gt;
 --fdm=null --native-gui=socket,in,30,,5501,udp&lt;br /&gt;
&lt;br /&gt;
For Flight Gear visualization, version 3.0 or greater with Rembrand switched on is best. If you wish to use version 2.4 or lower, you must add the following to the firmware section of your airframe file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;fixedwing or rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;define name=&amp;quot;FG_2_4&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_pprz_sim_OSX.png|thumb|right|350px|Screenshot of Flightgear visualizing the default Microjet simulation in OS X (not the default Muret, FR location)]]&lt;br /&gt;
&lt;br /&gt;
==Simulations Using JSBSim==&lt;br /&gt;
[http://jsbsim.sourceforge.net/index.html JSBSim] is an open-source flight dynamics and control software library. It can provide a more realistic simulation environment over the basic built-in Paparazzi simulator. See the [[Simulation|Simulation]] page for background information and how to run a normal simulation. After this can be done in a satisfactory manner, follow the steps below to utilize the JSBSim flight dynamics model.&lt;br /&gt;
&lt;br /&gt;
Please see [[JSBSim]] for installation instructions and [[Simulation#JSBSim]] for instructions on how to use the JSBSim FDM in simulations.&lt;br /&gt;
&lt;br /&gt;
==Differences with the Linux version==&lt;br /&gt;
This section is intended to document all the subtle differences between Linux and Mac OS X versions of Paparazzi.&lt;br /&gt;
===Change of text editor===&lt;br /&gt;
The default editor in Linux is gedit, but in OS X, it is open, which simply uses whatever the default program for opening .xml files is setup.&lt;br /&gt;
 &lt;br /&gt;
===Ivy subnet mask===&lt;br /&gt;
On Linux, the Ivy submask  is 127.255.255.255&lt;br /&gt;
&lt;br /&gt;
On Mac OS X, the Ivy submask is 224.255.255.255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In C applications, such as tmtc/c_ivy_client_example_1.c, this should be set adaptively by something like:&lt;br /&gt;
&lt;br /&gt;
  #ifdef __APPLE__&lt;br /&gt;
   printf(&amp;quot;Mac OS, network submask: 224.255.255.255\n&amp;quot;);&lt;br /&gt;
   IvyStart(&amp;quot;224.255.255.255&amp;quot;);&lt;br /&gt;
  #else&lt;br /&gt;
   printf(&amp;quot;NO Mac OS, network submask: 127.255.255.255\n&amp;quot;);&lt;br /&gt;
   IvyStart(&amp;quot;127.255.255.255&amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is there a better way to do this?&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]] [[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=20362</id>
		<title>Installation/MacOSX</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=20362"/>
		<updated>2015-09-22T02:06:24Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Installing from Source (Homebrew/Opam) */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Installation&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Update on OS X installation: Currently, arm-none-eabi-gdb on 10.6 should be broken (gcc-arm-embedded can be compiled by hand if required without python support, or installing python2.7 as a framework from a dmg might work).'''&lt;br /&gt;
&lt;br /&gt;
'''(Feb. 1, 2014) Current OS X limitations:'''&lt;br /&gt;
* '''10.6.* requires some manual effort to properly install gcc-arm-embedded, email the mailing list if help required  (gcc-arm-embedded can be compiled by hand if required without python support, or installing python2.7 as a framework from a dmg might work)'''&lt;br /&gt;
* '''There is no cross compiler for the ARDrone2.'''&lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
Would it not be great to also be able to run Paparazzi from your shiny Apple Mac? Well, this page explains how you can manage to do just that.&lt;br /&gt;
&lt;br /&gt;
The task of supporting Paparazzi on  Apple MacOS X is ongoing as the project evolves and the more people adapt it the process will be streamlined. Presently it is known that Paparazzi will install on OSX versions 10.6.*, 10.7.*, 10.8.*, and 10.9.*. Support on 10.6.* requires some additional effort.&lt;br /&gt;
&lt;br /&gt;
= Basic Install (Binary Installer) =&lt;br /&gt;
Depending on the version of Mac OS you have installed on your computer the installation process will vary slightly. Also this install process is only recommended for beginners. If you want to be able to use more up to date Paparazzi and be able to track the development more closely, you should consider installing Paparazzi tools using the source solution described in the next chapter.&lt;br /&gt;
&lt;br /&gt;
== Installation Video Tutorials (On OS X 10.9.* '''Mavericks''') ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtubehd|s5KFZqxqAr4}} {{#ev:youtubehd|lXB1y0Dv2y0}}&lt;br /&gt;
&lt;br /&gt;
== Basic Install (Binary Installer) (On OS X 10.9.* '''Mavericks''') ==&lt;br /&gt;
If your Apple Mac operation system is OSX Mavericks or newer then the easiest way to get started with Paparazzi on your Apple Mac is to start with the following Basic install. If you have an older version you want to follow the slightly longer Basic install, below.&lt;br /&gt;
&lt;br /&gt;
The steps you need to take to enjoy Paparazzi are:&lt;br /&gt;
# Install XQuartz from [http://xquartz.macosforge.org MacOSForge]. (You can alternatively use the X11.app if it is available for your version of Mac OS X.)&lt;br /&gt;
# Open the Terminal.app&lt;br /&gt;
# Install the command line tools by executing: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;xcode-select --install&amp;lt;/source&amp;gt; and clicking on the &amp;quot;Install&amp;quot; button in the dialog that will pop up.&lt;br /&gt;
# Install the Paparazzi Tools installer for your OS version from [http://download.paparazziuav.org/darwin/ paparazziuav.org]&lt;br /&gt;
## You might get an error saying: &amp;quot;paparazzi-tools-xxxxxx.mpkg can't be opened because it is from an unidentified developer.&amp;quot; To get rid of this error you will need to:&lt;br /&gt;
### Open &amp;quot;System Preferences&amp;quot;-&amp;gt;&amp;quot;Security&amp;amp;Privacy&amp;quot; and change the &amp;quot;Allow apps downloaded from:&amp;quot; setting to &amp;quot;Anywhere&amp;quot;. (The option might be greyed out. To activate the selection you will need to authenticate yourself as system administrator. Click on the lock in the left lower corner of the &amp;quot;System Preferences&amp;quot; window, to open the authentication window.)&lt;br /&gt;
# Set up your environment variables and Python appropriately using the pprz-env-set script:&lt;br /&gt;
## Get the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;curl https://raw.githubusercontent.com/paparazzi/paparazzi-portability-support/master/darwin/install/Contents/Resources/pprz-env-set &amp;gt;~/Desktop/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Move script to right location: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo mv ~/Desktop/pprz-env-set /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Change script permissions: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo chmod 755 /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Run the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Close the terminal. (Do that before you try to move on to the next step. Otherwise the newly set environment will not take effect and you will end up with compilation errors.)&lt;br /&gt;
# That's it! To run Paparazzi you need to open the Terminal app and build and run Paparazzi.&lt;br /&gt;
## In spotlight type Terminal and then open the Terminal App&lt;br /&gt;
## then type: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd ~/paparazzi &amp;amp;&amp;amp; make &amp;amp;&amp;amp; ./paparazzi&amp;lt;/source&amp;gt; (The first time you start paparazzi it might take several minutes to show a window. It is because GTK is indexing the fonts the first time it starts up.) (If you get the error: &amp;quot;Fatal error: exception Gtk.error(&amp;quot;GtkMain.init: initialization failed ml_gtk_init: initialization failed&amp;quot;)&amp;quot; the most likely source of the issue is the lack of X11 server. Install either X11.app or XQuartz as mentioned in step 1.)&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
* the binary installer will check if ~/paparazzi exists on your system. If it does, then the installer does nothing. If this directory does NOT already exist, the installer will automatically clone the Paparazzi Git repository into that directory.&lt;br /&gt;
* the binary installer will add a few lines to your ~/.profile for PATH modification and for default PAPARAZZI_HOME and PAPARAZZI_SRC env vars. If you have something other than the default ~/paparazzi installation, please edit your ~/.profile and comment out the env var exports.&lt;br /&gt;
* the binary installer creates a symbolic link between the available /opt/paparazzi/bin/python2.7 and /opt/paparazzi/bin/python. Combined with the PATH modification, this will cause &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;python something.py&amp;lt;/source&amp;gt; to call /opt/paparazzi/bin/python2.7 instead of any system pythons.&lt;br /&gt;
&lt;br /&gt;
== Basic Install (Binary Installer) (Support: 10.7.* '''Lion''', 10.8.* '''Mountain Lion''') ==&lt;br /&gt;
If your Apple Mac operation system is OSX Snow Leopard or Lion or newer then the easiest way to get started with Paparazzi on your Apple Mac is to start with the Basic install.&lt;br /&gt;
&lt;br /&gt;
The steps you need to take to enjoy Paparazzi are:&lt;br /&gt;
# Install XQuartz from [http://xquartz.macosforge.org MacOSForge]. (You alternatively can install the X11.app from Apple. If it is available for your version of Mac OS X.)&lt;br /&gt;
# Install the latest available [http://itunes.apple.com/us/app/xcode/id448457090?mt=12 Xcode] development tool for your OS, we had good success with [http://itunes.apple.com/us/app/xcode/id448457090?mt=12 Xcode] v4.2 on Snow Leopard and v4.3.2 on Lion. For Snow Leopard, Xcode 3.2.6 also works and is still available as a [https://developer.apple.com/downloads/ free download] with an Apple ID (search for ''xcode 3.2.6'').&lt;br /&gt;
## With Xcode 4.3 and above you need to install the command line tools. Xcode --&amp;gt; Preferences --&amp;gt; Downloads --&amp;gt; Components --&amp;gt; Command line tools&lt;br /&gt;
## Check that the correct version of Xcode is being used for compilation &amp;lt;source lang=bash&amp;gt;/usr/bin/xcodebuild -version&amp;lt;/source&amp;gt; It should return the version of Xcode that has been installed, e.g. 4.2. In the rare case you need to change your XCode version run the following command in your terminal: &amp;lt;source lang=bash&amp;gt;sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer&amp;lt;/source&amp;gt;&lt;br /&gt;
# Install the Paparazzi Tools installer for your OS version from [http://download.paparazziuav.org/darwin/ paparazziuav.org]&lt;br /&gt;
# Set up your environment variables and Python appropriately using the pprz-env-set script:&lt;br /&gt;
## Get the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;curl https://raw2.github.com/paparazzi/paparazzi-portability-support/master/darwin/install/Contents/Resources/pprz-env-set &amp;gt; ~/Desktop/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Move script to right location: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo mv ~/Desktop/pprz-env-set /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Change script permissions: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo chmod 755 /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Run the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Close the terminal. (Do that before you try to move on to the next step. Otherwise the newly set environment will not take effect and you will end up with compilation errors.)&lt;br /&gt;
# That's it! To run Paparazzi you need to open the Terminal app and build and run Paparazzi.&lt;br /&gt;
## In spotlight type Terminal and then open the Terminal App&lt;br /&gt;
## then type: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd ~/paparazzi &amp;amp;&amp;amp; make &amp;amp;&amp;amp; ./paparazzi&amp;lt;/source&amp;gt; (The first time you start paparazzi it might take several minutes to show a window. It is because GTK is indexing the fonts the first time it starts up.) (If you get the error: &amp;quot;Fatal error: exception Gtk.error(&amp;quot;GtkMain.init: initialization failed ml_gtk_init: initialization failed&amp;quot;)&amp;quot; the most likely source of the issue is the lack of X11 server. Install either X11.app or XQuartz as mentioned in step 1.)&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
* the binary installer will check if ~/paparazzi exists on your system. If it does, then the installer does nothing. If this directory does NOT already exist, the installer will automatically clone the Paparazzi Git repository into that directory.&lt;br /&gt;
* the binary installer will add a few lines to your ~/.profile for PATH modification and for default PAPARAZZI_HOME and PAPARAZZI_SRC env vars. If you have something other than the default ~/paparazzi installation, please edit your ~/.profile and comment out the env var exports.&lt;br /&gt;
* the binary installer creates a symbolic link between the available /opt/paparazzi/bin/python2.7 and /opt/paparazzi/bin/python. Combined with the PATH modification, this will cause &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;python something.py&amp;lt;/source&amp;gt; to call /opt/paparazzi/bin/python2.7 instead of any system pythons.&lt;br /&gt;
&lt;br /&gt;
== Basic Uninstall ==&lt;br /&gt;
In the case you would like to uninstall Paparazzi after completing a basic installation, one must type the following in your terminal prompt:&lt;br /&gt;
&lt;br /&gt;
'''Warning''' This first step removes your paparazzi source code, including any changes you may have made yourself locally. If you want to keep your git repository intact, skip this first step and only use the following two steps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;rm -rf ~/paparazzi&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo pprz-env-set -u&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo rm -rf /opt/paparazzi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that pprz-env-setup -u removes the entry from ~/.profile and also removes the /opt/paparazzi/bin/python symlink.&lt;br /&gt;
&lt;br /&gt;
== Using Luftboot and PyUSB ==&lt;br /&gt;
&lt;br /&gt;
'''UPDATE:''' The lastest binary installer should have PyUSB included by default, no need to install it separately.&lt;br /&gt;
&lt;br /&gt;
If you are planning on loading code onto a Luftboot-equipped STM32 board, you will need to have a Python version on your machine that is active and with [http://sourceforge.net/apps/trac/pyusb/ PyUSB] installed for that version.&lt;br /&gt;
&lt;br /&gt;
To install PyUSB, execute&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo python setup.py install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
from inside the unzipped PyUSB source directory.&lt;br /&gt;
&lt;br /&gt;
To test which Python version is the default and whether this Python version can find the PyUSB module, in Terminal simply type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
To start the default Python. At the Python prompt (&amp;gt;&amp;gt;&amp;gt;) type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
import usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
If another prompt line comes up, PyUSB is installed correctly and you will be able to use Luftboot. If an error is thrown, then your configuration is not correct.&lt;br /&gt;
&lt;br /&gt;
== MacPorts and PyUSB ==&lt;br /&gt;
If you have MacPorts installed, you can install either &amp;lt;code&amp;gt;py26-pyusb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;py26-pyusb-devel&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;py27-pyusb-devel&amp;lt;/code&amp;gt;, depending on which Python(s) you have installed already, or wish to install. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install py27-pyusb-devel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To find out what versions of Python are available on your system (via MacPorts):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
port select --list python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Default Apple Python versions have a -apple ending.&lt;br /&gt;
&lt;br /&gt;
Select a different version of python to be the active version if desired. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo port select --set python python27&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A good, working configuration would be to have MacPorts installed, and install &amp;lt;code&amp;gt;py27-pyusb-devel&amp;lt;/code&amp;gt;, then ensure that python27 is the active version.&lt;br /&gt;
&lt;br /&gt;
== Adjusting your PATH and Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
There are sometimes path issues with OS X if you have MacPorts or a similar (Homebrew, Fink) system installed. The reason for this is there may be multiple copies of a binary required for Paparazzi in different places, and depending on the path, the desired instance is not correctly called. This often presents itself as an error when building the main Paparazzi source code. A typical error may involve the &amp;lt;code&amp;gt;pkg-config&amp;lt;/code&amp;gt; program. This can often be corrected by checking and adjusting your PATH environment variable.&lt;br /&gt;
&lt;br /&gt;
To check the currently configured default PATH:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ideally, the Paparazzi binary paths (&amp;lt;code&amp;gt;/opt/paparazzi/bin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/opt/paparazzi/sbin&amp;lt;/code&amp;gt;) should come first. To move the Paparazzi paths to the highest search priority:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export PATH=/opt/paparazzi/bin:/opt/paparazzi/sbin:$PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This will only be active in the current terminal session. If you wish to manually modify the path permanently, you can edit ~/.profile and add the above line to the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
= Installing from source (MacPorts) =&lt;br /&gt;
Note: This is known to work for Mac OS X MountainLion. For newer Mac OS versions you should try the Homebrew based install.&lt;br /&gt;
&lt;br /&gt;
The tools that are required to work with paparazzi on a Mac are installed from MacPorts. All of the commands are given by terminal commands, please open your terminal first.&lt;br /&gt;
&lt;br /&gt;
In case you '''already have MacPorts installed''', it is advised to run the following steps before proceeding:&lt;br /&gt;
&lt;br /&gt;
# check that /opt/local/bin is the first entry in your PATH, easy to check by giving the following command &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;echo $PATH&amp;lt;/source&amp;gt;&lt;br /&gt;
# Then give the following command to make sure your ports are up-to-date &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate &amp;amp;&amp;amp; sudo port upgrade outdated&amp;lt;/source&amp;gt;&lt;br /&gt;
..great, you now can run the installation steps starting from step '''4''' below.&lt;br /&gt;
&lt;br /&gt;
If you don't already have MacPorts installed run the following steps:&lt;br /&gt;
&lt;br /&gt;
# Install the latest [http://itunes.apple.com/us/app/xcode/id448457090?mt=12 XCode]. If you are using 10.9 (Mavericks) or newer you just need to run &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;xcode-select --install&amp;lt;/source&amp;gt;&lt;br /&gt;
# If you are using Mountain Lion, X11 is no longer included by default, use the [http://xquartz.macosforge.org/landing/ XQuartz project] to install it.&lt;br /&gt;
# Install [http://www.macports.org/install.php MacPorts]&lt;br /&gt;
# Edit the file &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;/opt/local/etc/macports/sources.conf&amp;lt;/source&amp;gt; and above the &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;rsync://...&amp;lt;/source&amp;gt; line add &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;rsync://rsync.paparazziuav.org/macports/ports/&amp;lt;/source&amp;gt; It is important that this line comes before the path to the standard ports as some of the Paparazzi ports are intended to replace the standard versions. The file is write protected so it will be necessary to be root in order to edit it. The simplest way is to open a terminal window and use nano thus: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo nano /opt/local/etc/macports/sources.conf&amp;lt;/source&amp;gt;&lt;br /&gt;
# Now update the available ports with the command: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate&amp;lt;/source&amp;gt;&lt;br /&gt;
# To install all of the paparazzi prerequisites: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port install paparazzi-tools&amp;lt;/source&amp;gt;&lt;br /&gt;
# ...Then go and have lunch, get a coffee, get some sleep. This will probably take a long time.&lt;br /&gt;
# After installation, we need to set the correct python to override the default OS X python: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port select --set python python27&amp;lt;/source&amp;gt;&lt;br /&gt;
# You can also [[#Changing the GTK look and feel|change the GTK theme]]&lt;br /&gt;
&lt;br /&gt;
Now you can follow the generic instructions for [[Installation|installing the paparazzi source]].&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' If you had previously used MacPorts to install Paparazzi, you may need to manually uninstall arm-none-eabi-binutils, arm-none-eabi-gcc-linaro, and arm-none-eabi-gdb prior to upgrading paparazzi-tools. libcmsis, libopenstm32 and libopencm3 ports may need to be uninstalled as well. For example:&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port uninstall -f libcmsis libopenstm32 libopencm3 arm-none-eabi-gdb arm-none-eabi-gcc-linaro arm-none-eabi-binutils&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lion and XCode 4.3 or newer notes ==&lt;br /&gt;
&lt;br /&gt;
After installing Xcode 4.3 you will need to install the command line tools by opening the XCode preferences pane, Downloads and selecting Command Line Tools for isnstallation. Otherwise you will not find GCC in your unix path.&lt;br /&gt;
&lt;br /&gt;
Also if macports is complaining about xcodebuild and that you should run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; sudo xcode-select -switch /Applications/Xcode.app &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should actually run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so that xcodebuild can find the needed executables for you.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If you continually experience problems installing paparazzi or paparazzi-tools then it may be that you have some other conflicting software installed. i.e. an old version of a library in /usr.&lt;br /&gt;
&lt;br /&gt;
One way to work around issues relating to prior MacPort installs that has been found is to clean out everything MacPorts has installed and install from scratch using the latest MacPorts&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port -f uninstall installed&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port clean --all uninstalled&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port install paparazzi-tools&amp;lt;/source&amp;gt;&lt;br /&gt;
This was in fact the process used to check that the code installed on a clean machine.&lt;br /&gt;
&lt;br /&gt;
== Upgrading to Lion ==&lt;br /&gt;
If you already have MacPorts and Paparazzi installed and running and you then upgrade to Lion you'll probably find that some things are broken. (make can't be found for example)&lt;br /&gt;
To remedy this situation you need to do the following:&lt;br /&gt;
# Upgrade Xcode to the Lion version. (App Store --&amp;gt; Search for Xcode and install)&lt;br /&gt;
# Install the Lion version of [http://www.macports.org/install.php MacPorts]&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port -f uninstall installed&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port clean --all uninstalled&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now here you have the opportunity to use the binary installer method detailed above or if installing from source then Macports can be used to build from source thus:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port install paparazzi-tools&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use a USB to serial converter that isn't based on the FTDI chipset then you may also find that your USB to Serial driver needs to be updated.&lt;br /&gt;
# Start console&lt;br /&gt;
# Plug in your USB to serial converter&lt;br /&gt;
You may get a message similar to this &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;Jul 26 23:14:48 Bernies com.apple.kextd[10]: Can't load /System/Library/Extensions/osx-pl2303.kext - no code for running kernel's architecture.&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are fortunate enough to have a USB to serial converter that is using the PL2303 chipset then the [http://www.prolific.com.tw/eng/downloads.asp?id=31 Prolific] driver should sort you out. Installation instructions are included in the readme.txt and are well worth following.&lt;br /&gt;
&lt;br /&gt;
== Keeping source files for debugging ==&lt;br /&gt;
If you wish to debug code using the source install then you'll find that many of the source files for the libraries are missing.&lt;br /&gt;
&lt;br /&gt;
This is because MacPorts cleans up the build artifacts and source files after the installation is complete. This behaviour can be changed by adding the -k option to the port command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  sudo port -k install paparazzi-tools&lt;br /&gt;
This will result in all of the source and build artefact files being left on the hard disk.&lt;br /&gt;
&lt;br /&gt;
Should you later wish to clean up these files you can do so with the clean command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  sudo port clean installed&lt;br /&gt;
&lt;br /&gt;
== Mavericks Notes ==&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Can not find the command line tools package in XCode any more.&lt;br /&gt;
&lt;br /&gt;
'''A:''' Since Mavericks (10.9) it is not necessary to install xcode to install the command line tools package that is needed for macports and paparazzi. Just run in the command line:&lt;br /&gt;
  xcode-select --install&lt;br /&gt;
&lt;br /&gt;
'''Q:''' libgcc is not compiling with error:&lt;br /&gt;
  :info:build The directory that should contain system headers does not exist:&lt;br /&gt;
  :info:build   /usr/include&lt;br /&gt;
&lt;br /&gt;
'''A:''' You probably upgraded from older OS X and are using old command line tools. Make sure to run '''xcode-select --install''' command. This should fix the libgcc compilation error.&lt;br /&gt;
&lt;br /&gt;
= Installing from Source (Homebrew/Opam) =&lt;br /&gt;
&lt;br /&gt;
Note: This is work in progress. This process will hopefully resolve some of the issues we are having with MacPorts on Mavericks and Yosemite.&lt;br /&gt;
Note: Macports used to conflict with homebrew. According to the homebrew website it is not the case any more as homebrew overrides the environment variables to have a pristine environment as if macports or fink were not installed on the system. It is not confirmed that opam does the same, so it probably is still a good idea to not have macports or fink installed simultanously with homebrew.&lt;br /&gt;
&lt;br /&gt;
# Install [http://xquartz.macosforge.org/landing/ XQuartz].&lt;br /&gt;
# Add XQuartz libraries to pkg-config search path by adding the following line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig&amp;lt;/source&amp;gt;&lt;br /&gt;
to your ~/.profile, ~/.bashrc, ~/.zshrc.local or similar. Note: You have to restart your terminal for the variable to be set, or you execute the export manually in your terminal by pasting the line and pressing enter.&lt;br /&gt;
# Install [http://brew.sh/ homebrew].&lt;br /&gt;
# Not all packages are yet part of the official homebrew repository (like ivy-c or jsbsim) this is why you might want to run the installation in two steps using the official repository and then [paparazzi homebrew tap https://github.com/paparazzi/homebrew-paparazzi].&lt;br /&gt;
## Install the packages included in homebrew: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;brew install git coreutils gnu-sed gtk+ libglade libgnomecanvas sdl libusb libusb-compat gsl opam wget dfu-util&amp;lt;/source&amp;gt;&lt;br /&gt;
## Add paparazzi tap: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;brew tap paparazzi/homebrew-paparazzi&amp;lt;/source&amp;gt;&lt;br /&gt;
## Install the remaining packages: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;brew install ivy-c jsbsim&amp;lt;/source&amp;gt; Note: We provide these packages as a tap but the hope is to eventually include them in the official homebrew repository.&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;opam init&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;opam pin add paparazzi-dev https://github.com/paparazzi/paparazzi-portability-support.git&amp;lt;/source&amp;gt;&lt;br /&gt;
# Install [https://launchpad.net/gcc-arm-embedded GCC ARM embedded].&lt;br /&gt;
## Download the gcc-arm-none-eabi-version.tar.bz2 from the website.&lt;br /&gt;
## Extract it into your home directory: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd ~/&amp;lt;/source&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;tar xfvj ~/Downloads/gcc-arm-none-eabi-*.tar.bz2&amp;lt;/source&amp;gt;&lt;br /&gt;
## Add the bin directory to your PATH environment variable by adding an export to your .profile or .bashrc or .zshrc.local or similar. &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;echo export PATH=$(echo ~/gcc-arm-none-eabi-* | tr ' ' '\n' | sort -r | head -n 1 )/bin:\$PATH &amp;gt;&amp;gt; ~/.profile&amp;lt;/source&amp;gt;&lt;br /&gt;
# Now you should be able to go into the cloned paparazzi repository and run make, and execute ./paparazzi&lt;br /&gt;
&lt;br /&gt;
This process is tested and is working on Mac OS Yosemite 10.10.2 ( [[User:Esden|Esden]] ([[User talk:Esden|talk]]) 16:16, 16 March 2015 (PDT) )&lt;br /&gt;
&lt;br /&gt;
Note: If you are getting the error &amp;quot;Fatal error: exception Gtk.Error(&amp;quot;GtkMain.init: initialization failed\nml_gtk_init: initialization failed&amp;quot;)&amp;quot;, try starting ./paparazzi inside of the XQuartz X11 terminal.&lt;br /&gt;
&lt;br /&gt;
=Running Paparazzi=&lt;br /&gt;
 &lt;br /&gt;
Please see [[Installation]] for details on running Paparazzi, downloading source code from GitHub and updating software.&lt;br /&gt;
&lt;br /&gt;
Paparazzi can be started in the usual way&lt;br /&gt;
 cd ~/paparazzi&lt;br /&gt;
 ./paparazzi&lt;br /&gt;
&lt;br /&gt;
=== Changing the GTK look and feel ===&lt;br /&gt;
&lt;br /&gt;
Run /opt/local/bin/switch2 to select a different theme.&lt;br /&gt;
More detailed instructions can be found at http://gtk.php.net/manual/en/html/tutorials/tutorials.installation.macosx-stepbystep.html&lt;br /&gt;
&lt;br /&gt;
Additional themes can be downloaded from http://art.gnome.org/themes/gtk2&lt;br /&gt;
&lt;br /&gt;
A good choice is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;switch2 /opt/local/share/themes/ClearlooksClassic/&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another theme selector with a little bit better preview option is &amp;quot;gtk-chtheme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== USB Drivers for Telemetry ===&lt;br /&gt;
&lt;br /&gt;
No drivers need to be installed in order to program either the STM32 based or LPC2148 based autopilot boards (ie TINY, TWOG, Booz, Lisa/L, Lisa/M) using a USB port. However telemetry between the vehicle and ground control station requires a modem. On an Apple Mac this will generally be connected to a USB port. Whatever modem is used it will be necessary to load drivers that allow Paparazzi to communicate with the modem. It is not possible to describe all possible modems and their configuration. However the most commonly used chipset for USB to serial communication is produced by FTDI. Below is described the installation of the FTDI drivers. This can be used as a guide for installing drivers for modems using other chipsets.   &lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
FTDI drivers can be downloaded from [http://www.ftdichip.com/Drivers/VCP.htm FTDI]&lt;br /&gt;
&lt;br /&gt;
The device will probably become available as something like /dev/tty.usbserial-000013FD when connected. Note that different USB ports get different addresses. When connecting to another port the same device came up as /dev/tty.usbserial-000014FA&lt;br /&gt;
&lt;br /&gt;
Since Paparazzi is currently configured to use /dev/ttyUSB0 it's easiest to just create a link to the required device.&lt;br /&gt;
# Remove all USB devices from the computer and run the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; hopefully this will not list anything&lt;br /&gt;
# Plug in your radio and repeat the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; this should now list the serial port that the radio has been connected to. In my case I get&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Next we need to create a symbolic link to the tty.usbserial device listed to /dev/ttyUSB0 in my case the command is &amp;lt;code&amp;gt;sudo ln -s /dev/tty.usbserial-000013FD /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
# To check that everything is correct run the first command again &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; and you should get something like this&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&lt;br /&gt;
#: lrwxr-xr-x  1 root  wheel         0 20 Jan 14:42 /dev/ttyUSB0 -&amp;gt; /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the FTDI driver (kernel extension) is loaded it takes over for all FTDI connections. This means that it will not be possible to program the Lisa/L or Lisa/M boards while the driver is loaded.&lt;br /&gt;
&lt;br /&gt;
To unload the driver use the command&lt;br /&gt;
 sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
This should not give an error. if it does then try again a few times after quitting programs that may have used the connection. If the driver still fails to unload then a reboot may be required.&lt;br /&gt;
&lt;br /&gt;
When it comes time to connect the modem again you'll again need the driver loaded. This can be done with the complementary command&lt;br /&gt;
 sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
&lt;br /&gt;
=== Workaround for Issues with errors (Device busy) when trying to program a Lisa/L ===&lt;br /&gt;
====Programming the Lisa on OS X====&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
The &amp;quot;default&amp;quot; vendor id and product id for the ftdi device on Lisa is the same one used by all the manufacturers of clone usb-serial interfaces. This isn't an issue on Linux because of the udev rules file we use does not load the ftdi drivers for lisas programming interface. Windows and Mac OS X don't use this file so they can only use vendor id and product id. &lt;br /&gt;
So as soon as you plug in Lisa they load USB-&amp;gt;serial port drivers for the two ports they believe are on Lisa causing a conflict. The programming of Lisa happens through a different mechanism and does not want the programming interface of Lisa to be taken by the FTDI driver which has already been loaded. For OS X there is a hack we can do that makes it better until we can get vendor and product ids sorted out. It involves modifying the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file. We change it so only the first of the two serial interfaces is loaded. The second is not as it is the programming interface.&lt;br /&gt;
&lt;br /&gt;
The File (edit with a text editor):&lt;br /&gt;
 /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist&lt;br /&gt;
&lt;br /&gt;
Here is a diff between a &amp;quot;vanilla OS X&amp;quot; and one that has been modified (Essentially below was removed):&lt;br /&gt;
 quadzilla:Contents root# diff ~/Info.plist Info.plist &lt;br /&gt;
&amp;lt;source lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
 1784,1805d1783&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232C_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
 1830,1853d1807&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232H_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bcdDevice&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1792&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have edited the file&lt;br /&gt;
 - sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
 - sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
To reload the driver or you can just reboot.&lt;br /&gt;
&lt;br /&gt;
It is expected as Paparazzi moves to supporting more operating systems that unique product and vendor ids will be obtained thus removing the need for this step.&lt;br /&gt;
&lt;br /&gt;
==Installing FlightGear==&lt;br /&gt;
FlightGear has been packaged for use on OS X. This package can be downloaded from:&lt;br /&gt;
http://www.flightgear.org/download/&lt;br /&gt;
&lt;br /&gt;
There are several packages available. Recently, FlightGear 3.0 was released. A binary for OS X is available, and seems to work properly on Maverics (OS X 10.9.2). Follow the directions [http://www.flightgear.org/download/main-program/ here] for installation. Additional documentation can be found  [http://macflightgear.sourceforge.net/home/documents/ here].&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_launchgui_OSX_pprzoptions.png|thumb|350px|Screenshot of FlightGear launch gui in OS X with options for visualizing Paparazzi simulations]]&lt;br /&gt;
Once FlightGear is installed, the GUI launcher can be used to set common options. By clicking on the Advanced Features arrow, one can gain access to many more options as well as an interface to specify command line options (the Others tab). This is where one can specify the flight dynamics model and network connectivity required for visualizing Paparazzi simulations as described on the [[Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In Paparazzi Center, add to the simulator command the &amp;lt;tt&amp;gt;--fg&amp;lt;/tt&amp;gt; option plus the IP address of the machine running flightgear in this case the loopback interace is used as Flightgear and Paparazzi are running on the same machine:&lt;br /&gt;
 .../sw/simulator/pprzsim-launch --aircraft TJ1 -t sim --boot --norc --fg_host 127.0.0.1&lt;br /&gt;
Note TJ1 is the name of the aircraft you must substitute this with the name of your aircraft.&lt;br /&gt;
* Launch Flight Gear with the following set in the others tab under advanced settings:&lt;br /&gt;
 --fdm=null --native-gui=socket,in,30,,5501,udp&lt;br /&gt;
&lt;br /&gt;
For Flight Gear visualization, version 3.0 or greater with Rembrand switched on is best. If you wish to use version 2.4 or lower, you must add the following to the firmware section of your airframe file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;fixedwing or rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;define name=&amp;quot;FG_2_4&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_pprz_sim_OSX.png|thumb|right|350px|Screenshot of Flightgear visualizing the default Microjet simulation in OS X (not the default Muret, FR location)]]&lt;br /&gt;
&lt;br /&gt;
==Simulations Using JSBSim==&lt;br /&gt;
[http://jsbsim.sourceforge.net/index.html JSBSim] is an open-source flight dynamics and control software library. It can provide a more realistic simulation environment over the basic built-in Paparazzi simulator. See the [[Simulation|Simulation]] page for background information and how to run a normal simulation. After this can be done in a satisfactory manner, follow the steps below to utilize the JSBSim flight dynamics model.&lt;br /&gt;
&lt;br /&gt;
Please see [[JSBSim]] for installation instructions and [[Simulation#JSBSim]] for instructions on how to use the JSBSim FDM in simulations.&lt;br /&gt;
&lt;br /&gt;
==Differences with the Linux version==&lt;br /&gt;
This section is intended to document all the subtle differences between Linux and Mac OS X versions of Paparazzi.&lt;br /&gt;
===Change of text editor===&lt;br /&gt;
The default editor in Linux is gedit, but in OS X, it is open, which simply uses whatever the default program for opening .xml files is setup.&lt;br /&gt;
 &lt;br /&gt;
===Ivy subnet mask===&lt;br /&gt;
On Linux, the Ivy submask  is 127.255.255.255&lt;br /&gt;
&lt;br /&gt;
On Mac OS X, the Ivy submask is 224.255.255.255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In C applications, such as tmtc/c_ivy_client_example_1.c, this should be set adaptively by something like:&lt;br /&gt;
&lt;br /&gt;
  #ifdef __APPLE__&lt;br /&gt;
   printf(&amp;quot;Mac OS, network submask: 224.255.255.255\n&amp;quot;);&lt;br /&gt;
   IvyStart(&amp;quot;224.255.255.255&amp;quot;);&lt;br /&gt;
  #else&lt;br /&gt;
   printf(&amp;quot;NO Mac OS, network submask: 127.255.255.255\n&amp;quot;);&lt;br /&gt;
   IvyStart(&amp;quot;127.255.255.255&amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is there a better way to do this?&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]] [[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=TCP_Aircraft_Server&amp;diff=18739</id>
		<title>TCP Aircraft Server</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=TCP_Aircraft_Server&amp;diff=18739"/>
		<updated>2014-06-11T01:07:58Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Usage */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Tools&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;tcp aircraft server&amp;lt;/tt&amp;gt; (in &amp;lt;tt&amp;gt;sw/tools/tcp_aircraft_server/&amp;lt;/tt&amp;gt;) is an agent that re-broadcasts the ivy telemetry stream from a specified vehicle over tcp to a specified remote ip which hosts its own local ground segment ivy network. This allows the broadcast of a vehicle telemetry stream over the internet to a remote party without the need for VPNs.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Broadcast Ground Station ===&lt;br /&gt;
&lt;br /&gt;
If you have not done so already, set your Paparazzi src and home directories:&lt;br /&gt;
&lt;br /&gt;
 export PAPARAZZI_SRC=~/path/to/paparazzi&lt;br /&gt;
 export PAPARAZZI_HOME=~/path/to/paparazzi&lt;br /&gt;
&lt;br /&gt;
Then, from your Paparazzi directory, run:&lt;br /&gt;
 ./sw/ground_segment/tmtc/ivy_tcp_aircraft -id &amp;lt;ac_id_number&amp;gt; -h &amp;lt;remote IP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Recipient Computer ===&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
 ./sw/tools/tcp_aircraft_server/tcp_aircraft_server.py&lt;br /&gt;
&lt;br /&gt;
Then open [http://wiki.paparazziuav.org/wiki/Paparazzi_Center Paparazzi Center] using the -n option for the [http://wiki.paparazziuav.org/wiki/Server Server] unless you wish to log messages locally, and use the tools within Paparazzi Center as you would do normally.&lt;br /&gt;
&lt;br /&gt;
The recipient side of the setup broadcasts locally over the default Paparazzi ivy bus 127.255.255.255:2010&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lisa&amp;diff=18705</id>
		<title>Lisa</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lisa&amp;diff=18705"/>
		<updated>2014-06-03T22:11:59Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added photos and wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Autopilots&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
Lisa ( the Lost Illusions Serendipitous Autopilot) is a new range of autopilots based on [http://www.st.com/mcu/inchtml-pages-stm32.html STM32] microcontrollers ( CortexM3@72Mhz ) designed to run Paparazzi.&lt;br /&gt;
There's no such thing as a perfect autopilot, only autopilots adapted to a particular purpose. This is the reason why Lisa comes in different flavors for different usages. &lt;br /&gt;
&lt;br /&gt;
The first members of the family are:&lt;br /&gt;
&lt;br /&gt;
*Lisa/L, a design where the STM32 is associated to a gumstix [http://www.gumstix.net/Setup-and-Programming/cat/Overo-Setup-and-Programming/111.html Overo].&lt;br /&gt;
*Lisa/M, a design focusing on cost and simplicity.&lt;br /&gt;
*Lisa/S, a design focusing on size and weight.&lt;br /&gt;
&lt;br /&gt;
==Lisa/L==&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
Lisa/L is a dual processor board autopilot designed to allow the possibility of using Linux for Paparazzi airborne code.&lt;br /&gt;
&lt;br /&gt;
[[Image:lisa_l_bloc_diag_simple.png|360px]]&lt;br /&gt;
[[Image:lisa_l_top.png|360px]] [[Image:lisa_l_bot.png|360px]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
The documentation for Lisa/L is broken into several parts due to board complexity and Gumstix [[Overo]] integration.&lt;br /&gt;
* [[Lisa/L|Main Documentation]] - primary hardware documentation and intro to software&lt;br /&gt;
* [[Dev/LisaL|Additional Developer Documentation]] - additional advanced hardware and software documentation and notes&lt;br /&gt;
* [[LisaL_Gallery|Lisa/L Gallery]] - nice pictures of Lisa/L&lt;br /&gt;
* [[User/LisaL/Tutorial/Quadrocopter|Unfinished Rotorcraft Tutorial]] - rotorcraft tutorial, needs considerable work&lt;br /&gt;
* [[User/LisaL/Tutorial/FixedWing|Unfinished Fixedwing Tutorial]] - fixedwing tutorial, needs considerable work&lt;br /&gt;
* [[OMAP|Gumstix Integration Intro]] - intro and documentation listing for integrating a Gumstix Overo with Lisa/L, including for USB devices and cameras&lt;br /&gt;
&lt;br /&gt;
== Lisa/M ==&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
Lisa/M is a great general purpose small-footprint autopilot. There are currently two versions that have been produced. Detailed documentation can be found here:&lt;br /&gt;
* [[Lisa/M_v2.0|Lisa/M v2.0 (current) Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_V2_0_TopView.JPG|360px|Lisa/M v2.0 Top View]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lisa/M_v1.0|Lisa/M v1.0 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Image:lisa_m_top_small.png|360px|Lisa/M v1.0 Top View]]&lt;br /&gt;
&lt;br /&gt;
=== Usage scenarios ===&lt;br /&gt;
&lt;br /&gt;
There are many potential applications for the small, relatively inexpensive and flexible Lisa/M. For regular Autopilot boards a full Lisa/M board is needed. For some scenarios just a basic Lisa/M without [[Inertial_Measurement_Units|IMU]] and barometric pressure sensor is needed, which reduces board cost. Here are some ideas (not all have yet been implemented):&lt;br /&gt;
&lt;br /&gt;
* As a basic Autopilot&lt;br /&gt;
** To use the Lisa/M as an autopilot, we need to attach a GPS receiver. A nice [[GPS#u-Blox_LEA_Series_Receivers|uBlox LEA-5H]] or newer will perform great.&lt;br /&gt;
* As an advanced Autopilot&lt;br /&gt;
** Additional sensors for measuring airspeed, current, etc. would enhance a fixed-wing airframe.&lt;br /&gt;
* As a servo extender&lt;br /&gt;
** Sometimes being able to control seven actuators is just not enough. Large airframes may require flaps or an airbrake and automatic landing facilities. Maybe special ACL/Nav lights, or four cameras with zoom. By using a coupled second basic Lisa/M and connecting this to the master AP board we can extend the amount of servos. Large airframes can also benefit from remote and/or redundant servo drivers.&lt;br /&gt;
* As a Safety Pilot Device&lt;br /&gt;
** To provide an extra safety level required in some UAS challenges. A second Lisa board can make it easy to adhere to the rules for such a challenge.&lt;br /&gt;
* As a Data Logger&lt;br /&gt;
** Maybe you have a need only to log all kinds of data, like temperature, volts, amps, height, airspeed, and not control the aircraft. For this we can setup a Lisa/M board. Collecting this data can be to a storage medium like an micro SD card. Sometimes there is no need for realtime data collection through telemetry but just for storing a huge dataset.&lt;br /&gt;
* As a Camera controller&lt;br /&gt;
** On some models that do not require many servos (for example - flying wing with only 3 channels used), spare channels can be used for camera control. In addition, it could be used as an independent pan-tilt unit (PTU) controller.&lt;br /&gt;
* As a Airframe Tracker&lt;br /&gt;
** Tracking an airframe for an antenna or camera on a tripod is one of the many options to use a Lisa/M Board.&lt;br /&gt;
&lt;br /&gt;
== Lia ==&lt;br /&gt;
&lt;br /&gt;
Lia is a lower-cost variant of Lisa/M 2.0. The microcontroller, basic layout, servo outputs, and mounting holes are the same. Major differences:&lt;br /&gt;
* 0.1&amp;quot; through-hole connections for non-servo I/O instead of Molex picoblade&lt;br /&gt;
** PCB size increased slightly to (58x34mm) to accomodate throughholes&lt;br /&gt;
* CAN transceiver removed on initial units; populated on later units (see [http://paparazzi.enac.fr/wiki/Lia documentation])&lt;br /&gt;
* barometer removed&lt;br /&gt;
* I2C level shifter removed&lt;br /&gt;
* 5V voltage regulator removed&lt;br /&gt;
* Added provisions for multiple BEC input balancing on servo connectors&lt;br /&gt;
&lt;br /&gt;
[[Image:Lia_1.1_top.jpg|360px|Lia v1.1 Top View]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Lia|Lia documentation]]&lt;br /&gt;
&lt;br /&gt;
== Lisa/S ==&lt;br /&gt;
&lt;br /&gt;
Lisa/S is very small AP board. The focus for this design is size, weight and power consumption. It's an autopilot suited for the smallest airframes.&lt;br /&gt;
&lt;br /&gt;
[[Image:Lisa_S_V0_1_r2_on_finger.jpg|360px]]&lt;br /&gt;
&lt;br /&gt;
* [[Lisa/S|Lisa/S Documentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Lisa]] [[Category:User_Documentation]] [[Category:Autopilots]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lisa&amp;diff=18704</id>
		<title>Lisa</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lisa&amp;diff=18704"/>
		<updated>2014-06-03T22:04:08Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Lia */ clarified CAN status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Autopilots&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
Lisa ( the Lost Illusions Serendipitous Autopilot) is a new range of autopilots based on [http://www.st.com/mcu/inchtml-pages-stm32.html STM32] microcontrollers ( CortexM3@72Mhz ) designed to run Paparazzi.&lt;br /&gt;
There's no such thing as a perfect autopilot, only autopilots adapted to a particular purpose. This is the reason why Lisa comes in different flavors for different usages. &lt;br /&gt;
&lt;br /&gt;
The first members of the family are:&lt;br /&gt;
&lt;br /&gt;
*Lisa/L, a design where the STM32 is associated to a gumstix [http://www.gumstix.net/Setup-and-Programming/cat/Overo-Setup-and-Programming/111.html Overo].&lt;br /&gt;
*Lisa/M, a design focusing on cost and simplicity.&lt;br /&gt;
*Lisa/S, a design focusing on size and weight.&lt;br /&gt;
&lt;br /&gt;
==Lisa/L==&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
Lisa/L is a dual processor board autopilot designed to allow the possibility of using Linux for Paparazzi airborne code.&lt;br /&gt;
&lt;br /&gt;
[[Image:lisa_l_bloc_diag_simple.png|360px]]&lt;br /&gt;
[[Image:lisa_l_top.png|360px]] [[Image:lisa_l_bot.png|360px]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
The documentation for Lisa/L is broken into several parts due to board complexity and Gumstix [[Overo]] integration.&lt;br /&gt;
* [[Lisa/L|Main Documentation]] - primary hardware documentation and intro to software&lt;br /&gt;
* [[Dev/LisaL|Additional Developer Documentation]] - additional advanced hardware and software documentation and notes&lt;br /&gt;
* [[LisaL_Gallery|Lisa/L Gallery]] - nice pictures of Lisa/L&lt;br /&gt;
* [[User/LisaL/Tutorial/Quadrocopter|Unfinished Rotorcraft Tutorial]] - rotorcraft tutorial, needs considerable work&lt;br /&gt;
* [[User/LisaL/Tutorial/FixedWing|Unfinished Fixedwing Tutorial]] - fixedwing tutorial, needs considerable work&lt;br /&gt;
* [[OMAP|Gumstix Integration Intro]] - intro and documentation listing for integrating a Gumstix Overo with Lisa/L, including for USB devices and cameras&lt;br /&gt;
&lt;br /&gt;
== Lisa/M ==&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
Lisa/M is a great general purpose small-footprint autopilot. There are currently two versions that have been produced. Detailed documentation can be found here:&lt;br /&gt;
* [[Lisa/M_v2.0|Lisa/M v2.0 (current) Documentation]]&lt;br /&gt;
* [[Lisa/M_v1.0|Lisa/M v1.0 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Image:lisa_m_top_small.png|360px|Lisa/M v1.0 Top View]]&lt;br /&gt;
&lt;br /&gt;
=== Usage scenarios ===&lt;br /&gt;
&lt;br /&gt;
There are many potential applications for the small, relatively inexpensive and flexible Lisa/M. For regular Autopilot boards a full Lisa/M board is needed. For some scenarios just a basic Lisa/M without [[Inertial_Measurement_Units|IMU]] and barometric pressure sensor is needed, which reduces board cost. Here are some ideas (not all have yet been implemented):&lt;br /&gt;
&lt;br /&gt;
* As a basic Autopilot&lt;br /&gt;
** To use the Lisa/M as an autopilot, we need to attach a GPS receiver. A nice [[GPS#u-Blox_LEA_Series_Receivers|uBlox LEA-5H]] or newer will perform great.&lt;br /&gt;
* As an advanced Autopilot&lt;br /&gt;
** Additional sensors for measuring airspeed, current, etc. would enhance a fixed-wing airframe.&lt;br /&gt;
* As a servo extender&lt;br /&gt;
** Sometimes being able to control seven actuators is just not enough. Large airframes may require flaps or an airbrake and automatic landing facilities. Maybe special ACL/Nav lights, or four cameras with zoom. By using a coupled second basic Lisa/M and connecting this to the master AP board we can extend the amount of servos. Large airframes can also benefit from remote and/or redundant servo drivers.&lt;br /&gt;
* As a Safety Pilot Device&lt;br /&gt;
** To provide an extra safety level required in some UAS challenges. A second Lisa board can make it easy to adhere to the rules for such a challenge.&lt;br /&gt;
* As a Data Logger&lt;br /&gt;
** Maybe you have a need only to log all kinds of data, like temperature, volts, amps, height, airspeed, and not control the aircraft. For this we can setup a Lisa/M board. Collecting this data can be to a storage medium like an micro SD card. Sometimes there is no need for realtime data collection through telemetry but just for storing a huge dataset.&lt;br /&gt;
* As a Camera controller&lt;br /&gt;
** On some models that do not require many servos (for example - flying wing with only 3 channels used), spare channels can be used for camera control. In addition, it could be used as an independent pan-tilt unit (PTU) controller.&lt;br /&gt;
* As a Airframe Tracker&lt;br /&gt;
** Tracking an airframe for an antenna or camera on a tripod is one of the many options to use a Lisa/M Board.&lt;br /&gt;
&lt;br /&gt;
== Lia ==&lt;br /&gt;
&lt;br /&gt;
Lia is a lower-cost variant of Lisa/M 2.0. The microcontroller, basic layout, servo outputs, and mounting holes are the same. Major differences:&lt;br /&gt;
* 0.1&amp;quot; through-hole connections for non-servo I/O instead of Molex picoblade&lt;br /&gt;
** PCB size increased slightly to (58x34mm) to accomodate throughholes&lt;br /&gt;
* CAN transceiver removed on initial units; populated on later units (see [http://paparazzi.enac.fr/wiki/Lia documentation])&lt;br /&gt;
&lt;br /&gt;
* barometer removed&lt;br /&gt;
* I2C level shifter removed&lt;br /&gt;
* 5V voltage regulator removed&lt;br /&gt;
* Added provisions for multiple BEC input balancing on servo connectors&lt;br /&gt;
&lt;br /&gt;
[http://paparazzi.enac.fr/wiki/Lia Lia current documentation]&lt;br /&gt;
&lt;br /&gt;
== Lisa/S ==&lt;br /&gt;
&lt;br /&gt;
Lisa/S is very small AP board. The focus for this design is size, weight and power consumption. It's autopilot suited for the smallest airframes.&lt;br /&gt;
&lt;br /&gt;
A picture of the first batch just ready to upload code and test.&lt;br /&gt;
&lt;br /&gt;
[[Image:Lisa_S_V0_1_r2_on_finger.jpg|360px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Lisa]] [[Category:User_Documentation]] [[Category:Autopilots]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=18590</id>
		<title>Installation/MacOSX</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/MacOSX&amp;diff=18590"/>
		<updated>2014-05-02T21:43:24Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Basic Uninstall */ typo in script name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Installation&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Update on OS X installation: Currently, arm-none-eabi-gdb on 10.6 should be broken (gcc-arm-embedded can be compiled by hand if required without python support, or installing python2.7 as a framework from a dmg might work).'''&lt;br /&gt;
&lt;br /&gt;
'''(Feb. 1, 2014) Current OS X limitations:'''&lt;br /&gt;
* '''10.6.* requires some manual effort to properly install gcc-arm-embedded, email the mailing list if help required  (gcc-arm-embedded can be compiled by hand if required without python support, or installing python2.7 as a framework from a dmg might work)'''&lt;br /&gt;
* '''There is no cross compiler for the ARDrone2.'''&lt;br /&gt;
&lt;br /&gt;
= Intro =&lt;br /&gt;
Would it not be great to also be able to run Paparazzi from your shiny Apple Mac? Well, this page explains how you can manage to do just that.&lt;br /&gt;
&lt;br /&gt;
The task of supporting Paparazzi on  Apple MacOS X is ongoing as the project evolves and the more people adapt it the process will be streamlined. Presently it is known that Paparazzi will install on OSX versions 10.6.*, 10.7.*, 10.8.*, and 10.9.*. Support on 10.6.* requires some additional effort.&lt;br /&gt;
&lt;br /&gt;
= Basic Install (Binary Installer) =&lt;br /&gt;
Depending on the version of Mac OS you have installed on your computer the installation process will vary slightly. Also this install process is only recommended for beginners. If you want to be able to use more up to date Paparazzi and be able to track the development more closely, you should consider installing Paparazzi tools using the source solution described in the next chapter.&lt;br /&gt;
&lt;br /&gt;
== Installation Video Tutorials (On OS X 10.9.* '''Mavericks''') ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtubehd|s5KFZqxqAr4}} {{#ev:youtubehd|lXB1y0Dv2y0}}&lt;br /&gt;
&lt;br /&gt;
== Basic Install (Binary Installer) (On OS X 10.9.* '''Mavericks''') ==&lt;br /&gt;
If your Apple Mac operation system is OSX Mavericks or newer then the easiest way to get started with Paparazzi on your Apple Mac is to start with the following Basic install. If you have an older version you want to follow the slightly longer Basic install, below.&lt;br /&gt;
&lt;br /&gt;
The steps you need to take to enjoy Paparazzi are:&lt;br /&gt;
# Install XQuartz from [http://xquartz.macosforge.org MacOSForge]. (You can alternatively use the X11.app if it is available for your version of Mac OS X.)&lt;br /&gt;
# Open the Terminal.app&lt;br /&gt;
# Install the command line tools by executing: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;xcode-select --install&amp;lt;/source&amp;gt; and clicking on the &amp;quot;Install&amp;quot; button in the dialog that will pop up.&lt;br /&gt;
# Install the Paparazzi Tools installer for your OS version from [http://download.paparazziuav.org/darwin/ paparazziuav.org]&lt;br /&gt;
## You might get an error saying: &amp;quot;paparazzi-tools-xxxxxx.mpkg can't be opened because it is from an unidentified developer.&amp;quot; To get rid of this error you will need to:&lt;br /&gt;
### Open &amp;quot;System Preferences&amp;quot;-&amp;gt;&amp;quot;Security&amp;amp;Privacy&amp;quot; and change the &amp;quot;Allow apps downloaded from:&amp;quot; setting to &amp;quot;Anywhere&amp;quot;. (The option might be greyed out. To activate the selection you will need to authenticate yourself as system administrator. Click on the lock in the left lower corner of the &amp;quot;System Preferences&amp;quot; window, to open the authentication window.)&lt;br /&gt;
# Set up your environment variables and Python appropriately using the pprz-env-set script:&lt;br /&gt;
## Get the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;curl https://raw2.github.com/paparazzi/paparazzi-portability-support/master/darwin/install/Contents/Resources/pprz-env-set &amp;gt; ~/Desktop/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Move script to right location: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo mv ~/Desktop/pprz-env-set /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Change script permissions: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo chmod 755 /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Run the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Close the terminal. (Do that before you try to move on to the next step. Otherwise the newly set environment will not take effect and you will end up with compilation errors.)&lt;br /&gt;
# That's it! To run Paparazzi you need to open the Terminal app and build and run Paparazzi.&lt;br /&gt;
## In spotlight type Terminal and then open the Terminal App&lt;br /&gt;
## then type: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd ~/paparazzi &amp;amp;&amp;amp; make &amp;amp;&amp;amp; ./paparazzi&amp;lt;/source&amp;gt; (The first time you start paparazzi it might take several minutes to show a window. It is because GTK is indexing the fonts the first time it starts up.) (If you get the error: &amp;quot;Fatal error: exception Gtk.error(&amp;quot;GtkMain.init: initialization failed ml_gtk_init: initialization failed&amp;quot;)&amp;quot; the most likely source of the issue is the lack of X11 server. Install either X11.app or XQuartz as mentioned in step 1.)&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
* the binary installer will check if ~/paparazzi exists on your system. If it does, then the installer does nothing. If this directory does NOT already exist, the installer will automatically clone the Paparazzi Git repository into that directory.&lt;br /&gt;
* the binary installer will add a few lines to your ~/.profile for PATH modification and for default PAPARAZZI_HOME and PAPARAZZI_SRC env vars. If you have something other than the default ~/paparazzi installation, please edit your ~/.profile and comment out the env var exports.&lt;br /&gt;
* the binary installer creates a symbolic link between the available /opt/paparazzi/bin/python2.7 and /opt/paparazzi/bin/python. Combined with the PATH modification, this will cause &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;python something.py&amp;lt;/source&amp;gt; to call /opt/paparazzi/bin/python2.7 instead of any system pythons.&lt;br /&gt;
&lt;br /&gt;
== Basic Install (Binary Installer) (Support: 10.7.* '''Lion''', 10.8.* '''Mountain Lion''') ==&lt;br /&gt;
If your Apple Mac operation system is OSX Snow Leopard or Lion or newer then the easiest way to get started with Paparazzi on your Apple Mac is to start with the Basic install.&lt;br /&gt;
&lt;br /&gt;
The steps you need to take to enjoy Paparazzi are:&lt;br /&gt;
# Install XQuartz from [http://xquartz.macosforge.org MacOSForge]. (You alternatively can install the X11.app from Apple. If it is available for your version of Mac OS X.)&lt;br /&gt;
# Install the latest available [http://itunes.apple.com/us/app/xcode/id448457090?mt=12 Xcode] development tool for your OS, we had good success with [http://itunes.apple.com/us/app/xcode/id448457090?mt=12 Xcode] v4.2 on Snow Leopard and v4.3.2 on Lion. For Snow Leopard, Xcode 3.2.6 also works and is still available as a [https://developer.apple.com/downloads/ free download] with an Apple ID (search for ''xcode 3.2.6'').&lt;br /&gt;
## With Xcode 4.3 and above you need to install the command line tools. Xcode --&amp;gt; Preferences --&amp;gt; Downloads --&amp;gt; Components --&amp;gt; Command line tools&lt;br /&gt;
## Check that the correct version of Xcode is being used for compilation &amp;lt;source lang=bash&amp;gt;/usr/bin/xcodebuild -version&amp;lt;/source&amp;gt; It should return the version of Xcode that has been installed, e.g. 4.2. In the rare case you need to change your XCode version run the following command in your terminal: &amp;lt;source lang=bash&amp;gt;sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer&amp;lt;/source&amp;gt;&lt;br /&gt;
# Install the Paparazzi Tools installer for your OS version from [http://download.paparazziuav.org/darwin/ paparazziuav.org]&lt;br /&gt;
# Set up your environment variables and Python appropriately using the pprz-env-set script:&lt;br /&gt;
## Get the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;curl https://raw2.github.com/paparazzi/paparazzi-portability-support/master/darwin/install/Contents/Resources/pprz-env-set &amp;gt; ~/Desktop/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Move script to right location: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo mv ~/Desktop/pprz-env-set /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Change script permissions: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo chmod 755 /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Run the script: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo /opt/paparazzi/bin/pprz-env-set&amp;lt;/source&amp;gt;&lt;br /&gt;
## Close the terminal. (Do that before you try to move on to the next step. Otherwise the newly set environment will not take effect and you will end up with compilation errors.)&lt;br /&gt;
# That's it! To run Paparazzi you need to open the Terminal app and build and run Paparazzi.&lt;br /&gt;
## In spotlight type Terminal and then open the Terminal App&lt;br /&gt;
## then type: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd ~/paparazzi &amp;amp;&amp;amp; make &amp;amp;&amp;amp; ./paparazzi&amp;lt;/source&amp;gt; (The first time you start paparazzi it might take several minutes to show a window. It is because GTK is indexing the fonts the first time it starts up.) (If you get the error: &amp;quot;Fatal error: exception Gtk.error(&amp;quot;GtkMain.init: initialization failed ml_gtk_init: initialization failed&amp;quot;)&amp;quot; the most likely source of the issue is the lack of X11 server. Install either X11.app or XQuartz as mentioned in step 1.)&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
* the binary installer will check if ~/paparazzi exists on your system. If it does, then the installer does nothing. If this directory does NOT already exist, the installer will automatically clone the Paparazzi Git repository into that directory.&lt;br /&gt;
* the binary installer will add a few lines to your ~/.profile for PATH modification and for default PAPARAZZI_HOME and PAPARAZZI_SRC env vars. If you have something other than the default ~/paparazzi installation, please edit your ~/.profile and comment out the env var exports.&lt;br /&gt;
* the binary installer creates a symbolic link between the available /opt/paparazzi/bin/python2.7 and /opt/paparazzi/bin/python. Combined with the PATH modification, this will cause &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;python something.py&amp;lt;/source&amp;gt; to call /opt/paparazzi/bin/python2.7 instead of any system pythons.&lt;br /&gt;
&lt;br /&gt;
== Basic Uninstall ==&lt;br /&gt;
In the case you would like to uninstall Paparazzi after completing a basic installation, one must type the following in your terminal prompt:&lt;br /&gt;
&lt;br /&gt;
'''Warning''' This first step removes your paparazzi source code, including any changes you may have made yourself locally. If you want to keep your git repository intact, skip this first step and only use the following two steps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;rm -rf ~/paparazzi&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo pprz-env-set -u&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo rm -rf /opt/paparazzi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that pprz-env-setup -u removes the entry from ~/.profile and also removes the /opt/paparazzi/bin/python symlink.&lt;br /&gt;
&lt;br /&gt;
== Using Luftboot and PyUSB ==&lt;br /&gt;
&lt;br /&gt;
'''UPDATE:''' The lastest binary installer should have PyUSB included by default, no need to install it separately.&lt;br /&gt;
&lt;br /&gt;
If you are planning on loading code onto a Luftboot-equipped STM32 board, you will need to have a Python version on your machine that is active and with [http://sourceforge.net/apps/trac/pyusb/ PyUSB] installed for that version.&lt;br /&gt;
&lt;br /&gt;
To install PyUSB, execute&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo python setup.py install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
from inside the unzipped PyUSB source directory.&lt;br /&gt;
&lt;br /&gt;
To test which Python version is the default and whether this Python version can find the PyUSB module, in Terminal simply type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
To start the default Python. At the Python prompt (&amp;gt;&amp;gt;&amp;gt;) type:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
import usb&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
If another prompt line comes up, PyUSB is installed correctly and you will be able to use Luftboot. If an error is thrown, then your configuration is not correct.&lt;br /&gt;
&lt;br /&gt;
== MacPorts and PyUSB ==&lt;br /&gt;
If you have MacPorts installed, you can install either &amp;lt;code&amp;gt;py26-pyusb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;py26-pyusb-devel&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;py27-pyusb-devel&amp;lt;/code&amp;gt;, depending on which Python(s) you have installed already, or wish to install. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo port selfupdate&lt;br /&gt;
sudo port install py27-pyusb-devel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To find out what versions of Python are available on your system (via MacPorts):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
port select --list python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Default Apple Python versions have a -apple ending.&lt;br /&gt;
&lt;br /&gt;
Select a different version of python to be the active version if desired. For example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo port select --set python python27&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A good, working configuration would be to have MacPorts installed, and install &amp;lt;code&amp;gt;py27-pyusb-devel&amp;lt;/code&amp;gt;, then ensure that python27 is the active version.&lt;br /&gt;
&lt;br /&gt;
== Adjusting your PATH and Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
There are sometimes path issues with OS X if you have MacPorts or a similar (Homebrew, Fink) system installed. The reason for this is there may be multiple copies of a binary required for Paparazzi in different places, and depending on the path, the desired instance is not correctly called. This often presents itself as an error when building the main Paparazzi source code. A typical error may involve the &amp;lt;code&amp;gt;pkg-config&amp;lt;/code&amp;gt; program. This can often be corrected by checking and adjusting your PATH environment variable.&lt;br /&gt;
&lt;br /&gt;
To check the currently configured default PATH:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ideally, the Paparazzi binary paths (&amp;lt;code&amp;gt;/opt/paparazzi/bin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/opt/paparazzi/sbin&amp;lt;/code&amp;gt;) should come first. To move the Paparazzi paths to the highest search priority:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export PATH=/opt/paparazzi/bin:/opt/paparazzi/sbin:$PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This will only be active in the current terminal session. If you wish to manually modify the path permanently, you can edit ~/.profile and add the above line to the bottom of the file.&lt;br /&gt;
&lt;br /&gt;
= Installing from source =&lt;br /&gt;
The tools that are required to work with paparazzi on a Mac are installed from MacPorts. All of the commands are given by terminal commands, please open your terminal first.&lt;br /&gt;
&lt;br /&gt;
In case you '''already have MacPorts installed''', it is advised to run the following steps before proceeding:&lt;br /&gt;
&lt;br /&gt;
# check that /opt/local/bin is the first entry in your PATH, easy to check by giving the following command &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;echo $PATH&amp;lt;/source&amp;gt;&lt;br /&gt;
# Then give the following command to make sure your ports are up-to-date &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate &amp;amp;&amp;amp; sudo port upgrade outdated&amp;lt;/source&amp;gt;&lt;br /&gt;
..great, you now can run the installation steps starting from step '''4''' below.&lt;br /&gt;
&lt;br /&gt;
If you don't already have MacPorts installed run the following steps:&lt;br /&gt;
&lt;br /&gt;
# Install the latest [http://itunes.apple.com/us/app/xcode/id448457090?mt=12 XCode]. If you are using 10.9 (Mavericks) or newer you just need to run &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;xcode-select --install&amp;lt;/source&amp;gt;&lt;br /&gt;
# If you are using Mountain Lion, X11 is no longer included by default, use the [http://xquartz.macosforge.org/landing/ XQuartz project] to install it.&lt;br /&gt;
# Install [http://www.macports.org/install.php MacPorts]&lt;br /&gt;
# Edit the file &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;/opt/local/etc/macports/sources.conf&amp;lt;/source&amp;gt; and above the &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;rsync://...&amp;lt;/source&amp;gt; line add &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;rsync://rsync.paparazziuav.org/macports/ports/&amp;lt;/source&amp;gt; It is important that this line comes before the path to the standard ports as some of the Paparazzi ports are intended to replace the standard versions. The file is write protected so it will be necessary to be root in order to edit it. The simplest way is to open a terminal window and use nano thus: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo nano /opt/local/etc/macports/sources.conf&amp;lt;/source&amp;gt;&lt;br /&gt;
# Now update the available ports with the command: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate&amp;lt;/source&amp;gt;&lt;br /&gt;
# To install all of the paparazzi prerequisites: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port install paparazzi-tools&amp;lt;/source&amp;gt;&lt;br /&gt;
# ...Then go and have lunch, get a coffee, get some sleep. This will probably take a long time.&lt;br /&gt;
# After installation, we need to set the correct python to override the default OS X python: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port select --set python python27&amp;lt;/source&amp;gt;&lt;br /&gt;
# You can also [[#Changing the GTK look and feel|change the GTK theme]]&lt;br /&gt;
&lt;br /&gt;
Now you can follow the generic instructions for [[Installation|installing the paparazzi source]].&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' If you had previously used MacPorts to install Paparazzi, you may need to manually uninstall arm-none-eabi-binutils, arm-none-eabi-gcc-linaro, and arm-none-eabi-gdb prior to upgrading paparazzi-tools. libcmsis, libopenstm32 and libopencm3 ports may need to be uninstalled as well. For example:&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port uninstall -f libcmsis libopenstm32 libopencm3 arm-none-eabi-gdb arm-none-eabi-gcc-linaro arm-none-eabi-binutils&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lion and XCode 4.3 or newer notes ==&lt;br /&gt;
&lt;br /&gt;
After installing Xcode 4.3 you will need to install the command line tools by opening the XCode preferences pane, Downloads and selecting Command Line Tools for isnstallation. Otherwise you will not find GCC in your unix path.&lt;br /&gt;
&lt;br /&gt;
Also if macports is complaining about xcodebuild and that you should run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; sudo xcode-select -switch /Applications/Xcode.app &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should actually run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
so that xcodebuild can find the needed executables for you.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If you continually experience problems installing paparazzi or paparazzi-tools then it may be that you have some other conflicting software installed. i.e. an old version of a library in /usr.&lt;br /&gt;
&lt;br /&gt;
One way to work around issues relating to prior MacPort installs that has been found is to clean out everything MacPorts has installed and install from scratch using the latest MacPorts&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port -f uninstall installed&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port clean --all uninstalled&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port install paparazzi-tools&amp;lt;/source&amp;gt;&lt;br /&gt;
This was in fact the process used to check that the code installed on a clean machine.&lt;br /&gt;
&lt;br /&gt;
== Upgrading to Lion ==&lt;br /&gt;
If you already have MacPorts and Paparazzi installed and running and you then upgrade to Lion you'll probably find that some things are broken. (make can't be found for example)&lt;br /&gt;
To remedy this situation you need to do the following:&lt;br /&gt;
# Upgrade Xcode to the Lion version. (App Store --&amp;gt; Search for Xcode and install)&lt;br /&gt;
# Install the Lion version of [http://www.macports.org/install.php MacPorts]&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port -f uninstall installed&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port clean --all uninstalled&amp;lt;/source&amp;gt;&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port selfupdate&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now here you have the opportunity to use the binary installer method detailed above or if installing from source then Macports can be used to build from source thus:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port install paparazzi-tools&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use a USB to serial converter that isn't based on the FTDI chipset then you may also find that your USB to Serial driver needs to be updated.&lt;br /&gt;
# Start console&lt;br /&gt;
# Plug in your USB to serial converter&lt;br /&gt;
You may get a message similar to this &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;Jul 26 23:14:48 Bernies com.apple.kextd[10]: Can't load /System/Library/Extensions/osx-pl2303.kext - no code for running kernel's architecture.&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are fortunate enough to have a USB to serial converter that is using the PL2303 chipset then the [http://www.prolific.com.tw/eng/downloads.asp?id=31 Prolific] driver should sort you out. Installation instructions are included in the readme.txt and are well worth following.&lt;br /&gt;
&lt;br /&gt;
== Keeping source files for debugging ==&lt;br /&gt;
If you wish to debug code using the source install then you'll find that many of the source files for the libraries are missing.&lt;br /&gt;
&lt;br /&gt;
This is because MacPorts cleans up the build artifacts and source files after the installation is complete. This behaviour can be changed by adding the -k option to the port command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  sudo port -k install paparazzi-tools&lt;br /&gt;
This will result in all of the source and build artefact files being left on the hard disk.&lt;br /&gt;
&lt;br /&gt;
Should you later wish to clean up these files you can do so with the clean command.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  sudo port clean installed&lt;br /&gt;
&lt;br /&gt;
== Mavericks Notes ==&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Can not find the command line tools package in XCode any more.&lt;br /&gt;
&lt;br /&gt;
'''A:''' Since Mavericks (10.9) it is not necessary to install xcode to install the command line tools package that is needed for macports and paparazzi. Just run in the command line:&lt;br /&gt;
  xcode-select --install&lt;br /&gt;
&lt;br /&gt;
'''Q:''' libgcc is not compiling with error:&lt;br /&gt;
  :info:build The directory that should contain system headers does not exist:&lt;br /&gt;
  :info:build   /usr/include&lt;br /&gt;
&lt;br /&gt;
'''A:''' You probably upgraded from older OS X and are using old command line tools. Make sure to run '''xcode-select --install''' command. This should fix the libgcc compilation error.&lt;br /&gt;
&lt;br /&gt;
=Running Paparazzi=&lt;br /&gt;
 &lt;br /&gt;
Please see [[Installation]] for details on running Paparazzi, downloading source code from GitHub and updating software.&lt;br /&gt;
&lt;br /&gt;
Paparazzi can be started in the usual way&lt;br /&gt;
 cd ~/paparazzi&lt;br /&gt;
 ./paparazzi&lt;br /&gt;
&lt;br /&gt;
=== Changing the GTK look and feel ===&lt;br /&gt;
&lt;br /&gt;
Run /opt/local/bin/switch2 to select a different theme.&lt;br /&gt;
More detailed instructions can be found at http://gtk.php.net/manual/en/html/tutorials/tutorials.installation.macosx-stepbystep.html&lt;br /&gt;
&lt;br /&gt;
Additional themes can be downloaded from http://art.gnome.org/themes/gtk2&lt;br /&gt;
&lt;br /&gt;
A good choice is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;switch2 /opt/local/share/themes/ClearlooksClassic/&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Drivers for Telemetry ===&lt;br /&gt;
&lt;br /&gt;
No drivers need to be installed in order to program either the STM32 based or LPC2148 based autopilot boards (ie TINY, TWOG, Booz, Lisa/L, Lisa/M) using a USB port. However telemetry between the vehicle and ground control station requires a modem. On an Apple Mac this will generally be connected to a USB port. Whatever modem is used it will be necessary to load drivers that allow Paparazzi to communicate with the modem. It is not possible to describe all possible modems and their configuration. However the most commonly used chipset for USB to serial communication is produced by FTDI. Below is described the installation of the FTDI drivers. This can be used as a guide for installing drivers for modems using other chipsets.   &lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
FTDI drivers can be downloaded from [http://www.ftdichip.com/Drivers/VCP.htm FTDI]&lt;br /&gt;
&lt;br /&gt;
The device will probably become available as something like /dev/tty.usbserial-000013FD when connected. Note that different USB ports get different addresses. When connecting to another port the same device came up as /dev/tty.usbserial-000014FA&lt;br /&gt;
&lt;br /&gt;
Since Paparazzi is currently configured to use /dev/ttyUSB0 it's easiest to just create a link to the required device.&lt;br /&gt;
# Remove all USB devices from the computer and run the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; hopefully this will not list anything&lt;br /&gt;
# Plug in your radio and repeat the command &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; this should now list the serial port that the radio has been connected to. In my case I get&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Next we need to create a symbolic link to the tty.usbserial device listed to /dev/ttyUSB0 in my case the command is &amp;lt;code&amp;gt;sudo ln -s /dev/tty.usbserial-000013FD /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
# To check that everything is correct run the first command again &amp;lt;code&amp;gt;ls -l /dev/*usb* /dev/*USB*&amp;lt;/code&amp;gt; and you should get something like this&lt;br /&gt;
#: &amp;lt;pre&amp;gt;    ls -l /dev/*usb* /dev/*USB*&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  27 20 Jan 14:38 /dev/cu.usbserial-000013FD&lt;br /&gt;
#: crw-rw-rw-  1 root  wheel   11,  26 20 Jan 14:38 /dev/tty.usbserial-000013FD&lt;br /&gt;
#: lrwxr-xr-x  1 root  wheel         0 20 Jan 14:42 /dev/ttyUSB0 -&amp;gt; /dev/tty.usbserial-000013FD&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the FTDI driver (kernel extension) is loaded it takes over for all FTDI connections. This means that it will not be possible to program the Lisa/L or Lisa/M boards while the driver is loaded.&lt;br /&gt;
&lt;br /&gt;
To unload the driver use the command&lt;br /&gt;
 sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
This should not give an error. if it does then try again a few times after quitting programs that may have used the connection. If the driver still fails to unload then a reboot may be required.&lt;br /&gt;
&lt;br /&gt;
When it comes time to connect the modem again you'll again need the driver loaded. This can be done with the complementary command&lt;br /&gt;
 sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext&lt;br /&gt;
&lt;br /&gt;
=== Workaround for Issues with errors (Device busy) when trying to program a Lisa/L ===&lt;br /&gt;
====Programming the Lisa on OS X====&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
The &amp;quot;default&amp;quot; vendor id and product id for the ftdi device on Lisa is the same one used by all the manufacturers of clone usb-serial interfaces. This isn't an issue on Linux because of the udev rules file we use does not load the ftdi drivers for lisas programming interface. Windows and Mac OS X don't use this file so they can only use vendor id and product id. &lt;br /&gt;
So as soon as you plug in Lisa they load USB-&amp;gt;serial port drivers for the two ports they believe are on Lisa causing a conflict. The programming of Lisa happens through a different mechanism and does not want the programming interface of Lisa to be taken by the FTDI driver which has already been loaded. For OS X there is a hack we can do that makes it better until we can get vendor and product ids sorted out. It involves modifying the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file. We change it so only the first of the two serial interfaces is loaded. The second is not as it is the programming interface.&lt;br /&gt;
&lt;br /&gt;
The File (edit with a text editor):&lt;br /&gt;
 /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist&lt;br /&gt;
&lt;br /&gt;
Here is a diff between a &amp;quot;vanilla OS X&amp;quot; and one that has been modified (Essentially below was removed):&lt;br /&gt;
 quadzilla:Contents root# diff ~/Info.plist Info.plist &lt;br /&gt;
&amp;lt;source lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
 1784,1805d1783&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232C_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
 1830,1853d1807&lt;br /&gt;
 &amp;lt; 		&amp;lt;key&amp;gt;FT2232H_B&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;com.FTDI.driver.FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;ConfigData&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;dict&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;key&amp;gt;LatencyTimer&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 				&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;/dict&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;IOClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;FTDIUSBSerialDriver&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;IOProviderClass&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;string&amp;gt;IOUSBInterface&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bConfigurationValue&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bInterfaceNumber&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;bcdDevice&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1792&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt;  			&amp;lt;key&amp;gt;idProduct&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;24592&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;key&amp;gt;idVendor&amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt; 			&amp;lt;integer&amp;gt;1027&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &amp;lt; 		&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have edited the file&lt;br /&gt;
 - sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
 - sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext/&lt;br /&gt;
To reload the driver or you can just reboot.&lt;br /&gt;
&lt;br /&gt;
It is expected as Paparazzi moves to supporting more operating systems that unique product and vendor ids will be obtained thus removing the need for this step.&lt;br /&gt;
&lt;br /&gt;
==Installing FlightGear==&lt;br /&gt;
FlightGear has been packaged for use on OS X. This package can be downloaded from:&lt;br /&gt;
http://www.flightgear.org/download/&lt;br /&gt;
&lt;br /&gt;
There are several packages available. Recently, FlightGear 3.0 was released. A binary for OS X is available, and seems to work properly on Maverics (OS X 10.9.2). Follow the directions [http://www.flightgear.org/download/main-program/ here] for installation. Additional documentation can be found  [http://macflightgear.sourceforge.net/home/documents/ here].&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_launchgui_OSX_pprzoptions.png|thumb|350px|Screenshot of FlightGear launch gui in OS X with options for visualizing Paparazzi simulations]]&lt;br /&gt;
Once FlightGear is installed, the GUI launcher can be used to set common options. By clicking on the Advanced Features arrow, one can gain access to many more options as well as an interface to specify command line options (the Others tab). This is where one can specify the flight dynamics model and network connectivity required for visualizing Paparazzi simulations as described on the [[Simulation]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In Paparazzi Center, add to the simulator command the &amp;lt;tt&amp;gt;-fg&amp;lt;/tt&amp;gt; option plus the IP address of the machine running flightgear in this case the loopback interace is used as Flightgear and Paparazzi are running on the same machine:&lt;br /&gt;
 .../sw/simulator/launchsitl -a TJ1 -fg 127.0.0.1 -boot -norc&lt;br /&gt;
Note TJ1 is the name of the aircraft you must substitute this with the name of your aircraft.&lt;br /&gt;
* Launch Flight Gear with the following set in the others tab under advanced settings:&lt;br /&gt;
 --fdm=null --native-gui=socket,in,30,,5501,udp&lt;br /&gt;
&lt;br /&gt;
For Flight Gear visualization, version 3.0 or greater with Rembrand switched on is best. If you wish to use version 2.4 or lower, you must add the following to the firmware section of your airframe file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;fixedwing or rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;define name=&amp;quot;FG_2_4&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Flightgear_pprz_sim_OSX.png|thumb|right|350px|Screenshot of Flightgear visualizing the default Microjet simulation in OS X (not the default Muret, FR location)]]&lt;br /&gt;
&lt;br /&gt;
==Simulations Using JSBSim==&lt;br /&gt;
[http://jsbsim.sourceforge.net/index.html JSBSim] is an open-source flight dynamics and control software library. It can provide a more realistic simulation environment over the basic built-in Paparazzi simulator. See the [[Simulation|Simulation]] page for background information and how to run a normal simulation. After this can be done in a satisfactory manner, follow the steps below to utilize the JSBSim flight dynamics model.&lt;br /&gt;
&lt;br /&gt;
Please see [[JSBSim]] for installation instructions and [[Simulation#JSBSim]] for instructions on how to use the JSBSim FDM in simulations.&lt;br /&gt;
&lt;br /&gt;
==Differences with the Linux version==&lt;br /&gt;
This section is intended to document all the subtle differences between Linux and Mac OS X versions of Paparazzi.&lt;br /&gt;
===Change of text editor===&lt;br /&gt;
The default editor in Linux is gedit, but in OS X, it is open, which simply uses whatever the default program for opening .xml files is setup.&lt;br /&gt;
 &lt;br /&gt;
===Ivy subnet mask===&lt;br /&gt;
On Linux, the Ivy submask  is 127.255.255.255&lt;br /&gt;
&lt;br /&gt;
On Mac OS X, the Ivy submask is 224.255.255.255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In C applications, such as tmtc/c_ivy_client_example_1.c, this should be set adaptively by something like:&lt;br /&gt;
&lt;br /&gt;
  #ifdef __APPLE__&lt;br /&gt;
   printf(&amp;quot;Mac OS, network submask: 224.255.255.255\n&amp;quot;);&lt;br /&gt;
   IvyStart(&amp;quot;224.255.255.255&amp;quot;);&lt;br /&gt;
  #else&lt;br /&gt;
   printf(&amp;quot;NO Mac OS, network submask: 127.255.255.255\n&amp;quot;);&lt;br /&gt;
   IvyStart(&amp;quot;127.255.255.255&amp;quot;);&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is there a better way to do this?&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]] [[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Talk:Lisa/Bone&amp;diff=18471</id>
		<title>Talk:Lisa/Bone</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Talk:Lisa/Bone&amp;diff=18471"/>
		<updated>2014-04-14T19:07:18Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added questions about power supply, Lia vs Lisa/M&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JKG Questions:&lt;br /&gt;
*Do we need a power supply on the cape? It will increase cost quite a bit. If Lisa/M is still connected directly to peripherals it may as well get power from off-board, most vehicles already have a 5-6V servo bus&lt;br /&gt;
* fully-populated Lia vs Lisa/M?&lt;br /&gt;
** Allows (almost) all connections to be broken out through the cape and BBB -- 0.1&amp;quot; header pins on Lia and sockets on cape with screws to lock boards together&lt;br /&gt;
*** much less wire nest&lt;br /&gt;
** no header pin access to ANALOG1 or ANALOG2&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=RT_Paparazzi&amp;diff=18104</id>
		<title>RT Paparazzi</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=RT_Paparazzi&amp;diff=18104"/>
		<updated>2014-01-11T22:49:15Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Debugging with an Eclipse IDE */ text/image wrap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Real Time (RT) Paparazzi with ChibiOS/RT ==&lt;br /&gt;
RT Paparazzi is another step towards safer flight and more reliable autopilot. In a real time operating system (RTOS) [http://en.wikipedia.org/wiki/Real-time_operating_system] are multiple threads, which are doing specific jobs (e.g. a telemetry thread, a radio thread, a failsafe thread) at a defined rate. Unlike ''bare-metal'' application which uses interrupt driven timers for timing tasks, real time OS has a kernel which takes care of scheduling and running the threads. Having kernel, it is possible to set priority of each thread, how much memory it takes etc. which gives the developer more control over timing and resource managment.&lt;br /&gt;
&lt;br /&gt;
Besides kernel, a typical RTOS also has a harware abstraction layer (HAL) which stands between user application and actual hardware, so the application developer doesn't have to worry about drivers.&lt;br /&gt;
&lt;br /&gt;
There is a couple of RT based autopilots already, for example a very good Pixhawk autopilot [https://pixhawk.ethz.ch/px4/en/start] or trunetcopter [https://github.com/trunetcopter/trunetcopter]. &lt;br /&gt;
&lt;br /&gt;
Main strength of Paparazzi is its modularity - combining that with precise timing, scheduling and resource management that brings RTOS, Paparazzi can match if not exceed leading uav autopilots (potentially not only open-source), for example the aforementioned Pixhawk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ChibiOS/RT ==&lt;br /&gt;
RT Paparazzi is based on ChibiOS/RT [http://chibios.org/dokuwiki/doku.php]. ChibiOS/RT supports basically all architectures that standard Paparazzi does (see [http://chibios.org/dokuwiki/doku.php?id=chibios:architectures]), which makes both systems compatible. Since RTOS makes handling multiple I/O easier, but comes with some extra overhead (context switching, kernel code), it gives most leverage to to STM32 F1xx and F4xx based autopilots ([[Lisa/M_v20]], [[Lisa/S]], [[STM32F4_Discovery]], [[KroozSD]]...).&lt;br /&gt;
&lt;br /&gt;
RT Paparazzi is mainly developed by AggieAir team [http://aggieair.usu.edu/] at Utah State University. A different flavor of RT paparazzi (without ChibiOS/RT HAL) is developed by [[ENAC_UAV_Laboratory]].&lt;br /&gt;
&lt;br /&gt;
== Getting the code ==&lt;br /&gt;
Most recent code is available under ''rt_paparazzi'' branch from Paparazzi Git repo [https://github.com/paparazzi/paparazzi], however you can check these two repositories too ([https://github.com/podhrmic/ChibiOS-RT] and [https://github.com/podhrmic/paparazzi])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debugging with an Eclipse IDE ==&lt;br /&gt;
Having a good development and debugging environment is a must for developing RT embedded system. The steps of setting up Eclipse IDE are described here [http://chibios.org/dokuwiki/doku.php?id=chibios:guides:eclipse1] and here [http://chibios.org/dokuwiki/doku.php?id=chibios:guides:eclipse2].&lt;br /&gt;
&lt;br /&gt;
An alternative guide is for example here [http://embeddedprogrammer.blogspot.com/2012/09/stm32f4discovery-development-with-gcc.html]&lt;br /&gt;
&lt;br /&gt;
Just a few notes to the process:&lt;br /&gt;
* install GCC Arm Embedded toolchain [https://launchpad.net/~terry.guo/+archive/gcc-arm-embedded] (recommended anyway for Paparazzi since v 5.0)&lt;br /&gt;
* get Black Magic probe from Blacksphere [http://www.blacksphere.co.nz/main/blackmagic], it will make your life easier &lt;br /&gt;
* in '''Creating a GDB Debug Configuration''' use the following commands for Black Magic Probe:&lt;br /&gt;
 target extended-remote /dev/ttyACM0&lt;br /&gt;
 monitor jtag_scan&lt;br /&gt;
 attach 1&lt;br /&gt;
 monitor vector_catch disable hard&lt;br /&gt;
 set mem inaccessible-by-default off&lt;br /&gt;
 monitor option erase&lt;br /&gt;
 set print pretty&lt;br /&gt;
(for [[Lisa/M_v2.0#Lisa.2FLia_F4 | Lisa/Lia F4]] board use '' swdp_scan'' instead of ''jtag_scan'')&lt;br /&gt;
* if you are using luftboot, don't forget to add image offset into the debug configuration:&lt;br /&gt;
[[File:Rt_paparazzi_eclipse_setup_2.png]]&lt;br /&gt;
* don't forget in &amp;quot;Eclipse-&amp;gt;Window-&amp;gt;Preferences-&amp;gt;Run/Debug-&amp;gt;Launching-&amp;gt;Default Launchers-&amp;gt;GDB Hardware Debugging&amp;quot; set preferred launcher to &amp;quot;Standard GDB&amp;quot; (otherwise the ChibiOS/RT plugin won't work, tested in Eclipse Kepler Service Release 1):&lt;br /&gt;
[[File:Rt_paparazzi_eclipse_setup_1.png]]&lt;br /&gt;
* to use ChibiOS/RT debug module for Eclipse, download ChibiStudio (it is for Windows only) from SourceForge [http://sourceforge.net/projects/chibios/files/ChibiStudio/], extract it and from ''ChibiStudio/eclipse/plugins'' copy &lt;br /&gt;
 org.chibios.tools.eclipse.config_1.2.1.jar&lt;br /&gt;
 org.chibios.tools.eclipse.debug_1.0.8.jar&lt;br /&gt;
to your ''eclipse/plugins'' directory. Restart Eclipse and in &amp;quot;Help-&amp;gt;About Eclipe-&amp;gt;Installation Details-&amp;gt;Plugins&amp;quot; you should see both chibios plugins. Enable the plug-in while in the &amp;quot;Debug&amp;quot; view under: Window-&amp;gt;Show View-&amp;gt;Other...-&amp;gt;ChibiOS/RT-&amp;gt;ChibiOS/RT&amp;quot; (see [http://forum.chibios.org/phpbb/viewtopic.php?f=3&amp;amp;t=140] for details)&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Modems&amp;diff=18099</id>
		<title>Modems</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Modems&amp;diff=18099"/>
		<updated>2014-01-10T23:13:25Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Frequencies */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Paparazzi autopilots generally feature a TTL serial port to interface with any common radio modem.  The bidirectional link provides real-time telemetry and in-flight tuning and navigation commands.  The system is also capable overlaying the appropriate protocols to communicate thru non-transparent devices such as the Coronis Wavecard or Maxstream API-enabled products, allowing for hardware addressing for multiple aircraft or future enhancements such as data-relaying, inter-aircraft communication, RSSI signal monitoring and automatic in-flight modem power adjustment.  Below is a list of some of the common modems used with Paparazzi, for details on configuring your modem see the [[Airframe_Configuration#Telemetry_.28Modem.29|Airframe Configuration]] and [[XBee_configuration|XBee Configuration]] pages.&lt;br /&gt;
&lt;br /&gt;
==General comparison==&lt;br /&gt;
'''This is ONLY a comparison between modules which work acceptably'''&lt;br /&gt;
&lt;br /&gt;
All modules listed here work without issue and are generally available.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; &lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Feature'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_DigiMesh_.2F_802.15.4_.28.22Series_1.22.29|XBee Series 1]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_DigiMesh_.2F_802.15.4_.28.22Series_1.22.29|XBee Pro Series 1]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_ZB_.2F_ZNet_2.5_.28.22Series_2.22.29|XBee Series 2]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_ZB_.2F_ZNet_2.5_.28.22Series_2.22.29|XBee Pro Series 2]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_868LP|XBee 868LP]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_900HP|XBee Pro 900HP]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_XSC_900MHz|XBee Pro XSC 900]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_9XTend|Digi 9XTend]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#SiLabs_Si1000_SoC_based_modems|SiLabs Si1000]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#AC4790-200|Aerocom AC4790-200]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#AC4790-1000|Aerocom AC4790-1000]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Laird_RM024|Laird RM024 50mW]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Laird_RM024|Laird RM024 125mW]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#RN-41_Bluetooth_module.28Sparkfun.27s_WRL-08497.29|RN-41 Bluetooth]]'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''frequency'''||2,4GHz||2,4GHz||2,4GHz||2,4GHz||868MHz||900MHz||900MHz||900MHz, 2.4GHz||240-960MHz||900MHz||900MHz||2,4GHz||2,4GHz||2,4GHz&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''output power'''||1mW||63mW (US) 10 mW (Int'l)||2mW||63mW||5mW||250mW||250mW||1mW-1W||max 100mW||5-200mW||5-1000mW||2,5-50mW||2,5-125mW||32mW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''RF speed'''||250kbps||250kbps||250kbps||250kbps||10kbps, 80kbps||10 or 200kbps||10, 20kbps||9.6, 115.2kbps|| ||76.8kbps||76.8kbps||280, 500kbps||280, 500kbps||300kbps&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''antenna'''||chip, wire, rpsma, u.fl||chip, wire, rpsma, u.fl||chip, wire, rpsma, u.fl||chip, wire, rpsma, u.fl||external required||wire, rpsma, u.fl||wire, rpsma, u.fl||rpsma, MMCX||external required||MMCX, internal Antenna||MMCX||u.fl, chip, both||u.fl, chip, both||pcb trace&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''pinout'''||XBee||XBee||XBee||XBee||SMD||XBee||XBee||20 pin 2,54mm/USB||SMD (42 pin LGA)||20 pin mini connector||20 pin mini connector||XBee/SMD||XBee/SMD||SMD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''price'''||16€||26€||14€||28€||18€||32€||32€||150€||4€||52€||64€||30€||30€||20€&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''for Country'''||Worldwide||Worldwide||Worldwide||Worldwide||Europe|| || ||Worldwide||Worldwide||North America, Australia||North America, Australia||Europe||North America||Worldwide&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Frequencies==&lt;br /&gt;
'''please add your country !'''&amp;lt;br/&amp;gt;&lt;br /&gt;
analog and digital (video and modem) can NOT be done over the same frequency !!!&amp;lt;br/&amp;gt;&lt;br /&gt;
This list is for private persons only, with a extra licence more power or other frequencies can be used, but this list is not about this.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Frequency\Country'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Germany'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Austria'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot;  style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Swiss'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''5.8 GHz'''||30-1000mW||25-1000mW||25-1000mW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''5.8 GHz Video'''||25mW||25mW||maybe NO/25mW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''2.4 GHz'''||100mW||10mW||100mW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''2.4 GHz Video'''||10mW||10mW||&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''1.2 GHz'''||NO||NO||NO&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''900 MHz'''||NO||NO||NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If there is a range (e.g. 20-1000mW) given, it depends on several factors(frequency band, power control, frequency hopping, inform yourself !&lt;br /&gt;
&lt;br /&gt;
NO --&amp;gt; Do NOT use this frequency, it is maybe used by military or cell phones, you will get serious troubles if you use this !!!&lt;br /&gt;
&lt;br /&gt;
2.4GHz Video &amp;amp; 5.8GHz Video--&amp;gt; these are analog Video signals which have other limitations than digital ones.&lt;br /&gt;
&lt;br /&gt;
== Digi XBee modules ==&lt;br /&gt;
&lt;br /&gt;
Digi (formerly Maxstream) offers an increasing variety of Zigbee protocol modems well suited for Paparazzi in 2.4 GHz, 900MHz and 868Mhz frequencies.  The &amp;quot;Pro&amp;quot; series are long range, up to 40km!  Standard series are slightly smaller/lighter/lower power consumption and very short range.  All versions are all pin compatible and weigh around 2 grams with wire antennas. All Digi modems can be operated in transparent mode (as a serial line replacement) or in &amp;quot;API mode&amp;quot; with hardware addressing, managed networking, and RSSI (signal strength) data with the Paparazzi &amp;quot;Xbee&amp;quot; option.  &lt;br /&gt;
&lt;br /&gt;
Four antenna options are offered: RP-SMA, U-FL, wire antenna, chip antenna&lt;br /&gt;
&lt;br /&gt;
* XBee (PRO) ZB (the current series)&lt;br /&gt;
* XBee (PRO) ZNet 2.5 (formerly Series 2) (only legacy -&amp;gt; use XBee-PRO ZB)&lt;br /&gt;
The XBee &amp;amp; XBee-PRO ZB share hardware (ember stack) with XBee &amp;amp; XBee-PRO ZNet 2.5. As a result, modules can be &amp;quot;converted&amp;quot; from one platform to another by loading different firmware onto a given module.&lt;br /&gt;
&lt;br /&gt;
These two also share the same hardware and can be converted from one to another by flashing a different firmware:&lt;br /&gt;
* XBee-PRO 802.15.4 (formerly Series 1)&lt;br /&gt;
* XBee-PRO DigiMesh 2.4&lt;br /&gt;
&lt;br /&gt;
'''Note: Modules based on Freescale chipset (formerly Series 1) are not compatible with Ember chipset based modules (Series 2).'''&lt;br /&gt;
&lt;br /&gt;
If only point to point or point to multipoint communication is required 802.15.4 will do the job. These are designed for high data rates and low latency.&amp;lt;br/&amp;gt;&lt;br /&gt;
Modules with Zigbee firmware are needed for mesh functionality(communication between the UAV's)&lt;br /&gt;
&lt;br /&gt;
See the [[XBee_configuration|XBee Configuration]] page. This [http://pixhawk.ethz.ch/tutorials/how_to_configure_xbee tutorial] is also good to configure and get started with XBee Pro.&lt;br /&gt;
&lt;br /&gt;
=== Module Comparison ===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''Module'''||'''Point-to-Multipoint'''||'''ZigBee/Mesh'''||'''Chipset'''|||'''Software stack'''||'''Frequency'''||'''TX Power normal/PRO'''||'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee ZB'''&lt;br /&gt;
|&lt;br /&gt;
|yes&lt;br /&gt;
|Ember&lt;br /&gt;
|EmberZNet PRO 3.1 (ZigBee 2007)&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|2mW/50mW&lt;br /&gt;
|coordinator needed&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee ZNet 2.5'''&lt;br /&gt;
|&lt;br /&gt;
|yes&lt;br /&gt;
|Ember&lt;br /&gt;
|EmberZNet 2.5 ZigBee&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|2mW/50mW&lt;br /&gt;
|(only legacy -&amp;gt; use XBee-PRO ZB) coordinator needed&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee DigiMesh 2.4'''&lt;br /&gt;
|&lt;br /&gt;
|yes&lt;br /&gt;
|Freescale&lt;br /&gt;
|&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|&lt;br /&gt;
|all nodes equal (no special coordinators/routers/end-devices)&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee 802.15.4'''&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|Freescale&lt;br /&gt;
|&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee-PRO 868'''&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|&lt;br /&gt;
|868 MHz&lt;br /&gt;
|500mW&lt;br /&gt;
|Only High Power Frequency allowed in the UK. 2.4GHz limited to 10mW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pinout ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Maxstream_Xbee_pinout.jpg|left|thumb|Maxstream XBee pinout]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||''Xbee 20-pin Header''||''Name''||''Notes''||''Suggested Color''||&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
| +3.3v&lt;br /&gt;
| Power&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|DOUT&lt;br /&gt;
|Tx output - connect to Autopilot Rx&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|DIN&lt;br /&gt;
|Rx input - connect to Autopilot Tx&lt;br /&gt;
|Blue&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|GND&lt;br /&gt;
| Ground&lt;br /&gt;
|Black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The image view is from above, top, thus NOT at the side where the connector pins come out&lt;br /&gt;
&lt;br /&gt;
Note : DTR and RTS need to be wired for upgrading firmware&lt;br /&gt;
&lt;br /&gt;
=== GCS Adaptation ===&lt;br /&gt;
&lt;br /&gt;
There are several vendors of hardware to connect the ground XBee radio modem to the GCS computer.&lt;br /&gt;
&lt;br /&gt;
====Adafruit====&lt;br /&gt;
&lt;br /&gt;
[[Image:xbeeadapter_LRG.jpg|thumb|left|Adafruit XBee adapter board]][[Image:xbeeadapterftdi_LRG.jpg|thumb|Adafruit XBee adapter with FTDI cable]]&lt;br /&gt;
[http://www.adafruit.com/index.php?main_page=product_info&amp;amp;cPath=29&amp;amp;products_id=126 Adafruit] offers a great adapter board kit for the Xbee modules that includes a 5-3.3V voltage regulator, power and activity LEDs, and pins to connect directly to your FTDI cable for $10!  Some assembly required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Droids====&lt;br /&gt;
&lt;br /&gt;
[[Image:XBee_Simple_Board.jpg|thumb|left|XBee Simple Board]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XBee_USB_Board.jpg|thumb|left|XBee USB Board]]&lt;br /&gt;
&lt;br /&gt;
[http://www.droids.it/cmsvb4/content.php?143-990.001-XBee-Simple-Board XBee Simple Board]&lt;br /&gt;
&lt;br /&gt;
Simpler, lighter, smaller footprint, bit more expensive, comes assembled and tested. --GR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.droids.it/cmsvb4/content.php?152-990.002-XBee-USB-Board XBee USB Board]&lt;br /&gt;
&lt;br /&gt;
For direct connection to USB (no FTDI cable required)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PPZUAV====&lt;br /&gt;
&lt;br /&gt;
[[Image:FTDI_Utility_Board.jpg|thumb|left|FTDI Utility Board 1.0‎]]&lt;br /&gt;
&lt;br /&gt;
[https://www.ppzuav.com/osc/product_info.php?cPath=13&amp;amp;products_id=111&amp;amp;osCsid=upcl59vp10vdvno35ejl453442 ppzuav.com product link]&lt;br /&gt;
&lt;br /&gt;
FTDI Utility Board 1.0  with FTDI232RL&amp;lt;br/&amp;gt;&lt;br /&gt;
On board XBEE connector and molex picoblade connectors. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sparkfun====&lt;br /&gt;
&lt;br /&gt;
[[Image:XBee_Explorer_USB.jpg|thumb|left|XBee Explorer USB]]&lt;br /&gt;
&lt;br /&gt;
[http://www.sparkfun.com/products/8687 sparkfun.com]&lt;br /&gt;
&lt;br /&gt;
XBee Explorer USB with FTDI232RL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro DigiMesh / 802.15.4 (&amp;quot;Series 1&amp;quot;) ===&lt;br /&gt;
*Note: Products based on XBee ZNet 2.5 (formerly Series 2) modules do not communicate with products based on XBee DigiMesh / 802.15.4 (formerly Series 1) modules.&lt;br /&gt;
&lt;br /&gt;
These relatively cheap and light modules implement the [http://www.zigbee.org/en/index.asp ZigBee/IEEE 802.15.4] norm. They allow up to 1.6km (1 mile) range (Paparazzi tested to 2.5km (1.5 miles)). The main drawback of using such 2.4Ghz modules for datalink is that it will interfere with the 2.4Ghz analog video transmitters and a inevitable decrease in range when in proximity to any wifi devices. For the plane, get the whip antenna version if you are not planning to build a custom antenna.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:Xbee_Pro_USB_RF_Modem.jpg|thumb|left|XBee Pro USB Stand-alone Modem (XBP24-PKC-001-UA)]]&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 2.4GHz&lt;br /&gt;
* Output Power 100mW (Xbee Pro)&lt;br /&gt;
* Sensitivity  -100 dBm &lt;br /&gt;
* RF Data Rate Up to 250 Kbps&lt;br /&gt;
* Interface data rate Up to 115.2 Kbps&lt;br /&gt;
* Power Draw (typical) 214 mA TX / 55 mA RX &lt;br /&gt;
* Supply Voltage 3.3v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 1500m line-of-sight &lt;br /&gt;
* Dimensions 24 x 33mm&lt;br /&gt;
* Weight 4 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Chip antenna, ¼ monopole integrated whip antenna or a U.FL antenna connector (3 versions)&lt;br /&gt;
* Price: 16€, Pro 26€&lt;br /&gt;
|&lt;br /&gt;
[[Image:XBee_pro.jpg|thumb|left|XBee Pro OEM Modem]]&lt;br /&gt;
|}&lt;br /&gt;
Mouser: [http://au.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMtJacPDJcUJYzVn8vIv7g2fIpf5DCzJqko%3d 888-XBP24-PKC-001-UA]&amp;lt;br&amp;gt;&lt;br /&gt;
NOTE: If you wish to use this unit with another XBee type other than the 802.15.4 (i.e. XBee-PRO ZB) then purchase a modem with the U.fl connector.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.maxstream.net/products/xbee/xbee-pro-oem-rf-module-zigbee.php  product page]&lt;br /&gt;
* [http://www.maxstream.net/products/xbee/datasheet_XBee_OEM_RF-Modules.pdf  datasheet]&lt;br /&gt;
* [http://www.maxstream.net/products/xbee/product-manual_XBee_OEM_RF-Modules.pdf  user manual]&lt;br /&gt;
* To program your Xbee you need X-CTU you can download it [http://www.digi.com/support/productdetl.jsp?pid=3352&amp;amp;osvid=57&amp;amp;tp=5&amp;amp;s=316 here]. (only windows)&lt;br /&gt;
* explanation on X-CTU [http://www.ladyada.net/make/xbee/configure.html here].&lt;br /&gt;
* [http://ftp1.digi.com/support/firmware/update/xbee/ Drivers for XB24 and XBP24 modules]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro ZB / ZNet 2.5 (&amp;quot;Series 2&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
The low-power XBee ZB and extended-range XBee-PRO ZB use the ZigBee PRO Feature Set for advanced mesh networking.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:XBee_Pro_2SB.jpg|thumb|left|Digi XBee Pro ZB]]&lt;br /&gt;
|&lt;br /&gt;
* Low-cost, low-power mesh networking&lt;br /&gt;
* Interoperability with ZigBee PRO Feature Set devices from other vendors*&lt;br /&gt;
* Support for larger, more dense mesh networks&lt;br /&gt;
* 128-bit AES encryption&lt;br /&gt;
* Frequency agility&lt;br /&gt;
* Over-the-air firmware updates (change firmware remotely)&lt;br /&gt;
* ISM 2.4 GHz operating frequency&lt;br /&gt;
* XBee: 2 mW (+3 dBm) power output (up to 400 ft RF LOS range)&lt;br /&gt;
* XBee-PRO: 50 mW (+17 dBm) power output (up to 1 mile RF LOS range)&lt;br /&gt;
* RPSMA connector, U.FL connector, Chip antenna, or Wired Whip antenna&lt;br /&gt;
* price : 14€, Pro 28€&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
These are available from Mouser:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://au.mouser.com/Search/Refine.aspx?Keyword=888-XBP24-Z7WIT-004 888-XBP24-Z7WIT-004] XBee-PRO ZB with whip antenna&amp;lt;br&amp;gt;&lt;br /&gt;
[http://au.mouser.com/Search/Refine.aspx?Keyword=XBP24-Z7SIT-004 888-XBP24-Z7SIT-004] XBee-PRO ZB with RPSMA&lt;br /&gt;
&lt;br /&gt;
See [[XBee_configuration|XBee Configuration]] for setup.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless/zigbee-mesh/xbee-zb-module.jsp http://www.digi.com/products/wireless/zigbee-mesh/xbee-zb-module.jsp]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro 868 ===&lt;br /&gt;
&lt;br /&gt;
'''WARNING - THESE MODEMS HAVE A 10% DUTY CYCLE, AND CURRENTLY HAVE SEVERE ISSUES WITH PAPARAZZI'''&lt;br /&gt;
&lt;br /&gt;
868MHz is a limited band. Please read the [[868MHz Issues]]&lt;br /&gt;
&lt;br /&gt;
XBee-PRO 868 modules are long range embedded RF modules for European applications. Purpose-built for exceptional RF performance, XBee-PRO 868 modules are ideal for applications with challenging RF environments, such as urban deployments, or where devices are several kilometers apart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:xbeeproxsc-rpsma.jpg|thumb|left|Maxstream XBee Pro 868]]&lt;br /&gt;
|&lt;br /&gt;
* 868 MHz short range device (SRD) G3 band for Europe&lt;br /&gt;
* Software selectable Transmit Power&lt;br /&gt;
* 40 km RF LOS w/ dipole antennas&lt;br /&gt;
* 80 km RF LOS w/ high gain antennas (TX Power reduced)&lt;br /&gt;
* Simple to use peer-to-peer/point-to-mulitpoint topology&lt;br /&gt;
* 128-bit AES encryption&lt;br /&gt;
* 500 mW EIRP&lt;br /&gt;
* 24 kbps RF data rate&lt;br /&gt;
* price : ~70 USD&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [[XBee_configuration#XBee_Pro_868_MHZ|XBee Configuration]] for setup.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless/point-multipoint/xbee-pro-868.jsp http://www.digi.com/products/wireless/point-multipoint/xbee-pro-868.jsp]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee 868LP ===&lt;br /&gt;
&lt;br /&gt;
XBee 868LP modules are a low-power 868 MHz RF module for use in Europe. The range is shorter than it's brother the XBee PRO-868, but it can use the 868 G4 band with hopping which does not have restrictions on it's duty cycle. This is a big advantage if one want to have a good stream of telemetry data&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:868lp.jpg|thumb|left|XBee 868LP]]&lt;br /&gt;
|&lt;br /&gt;
* 868 MHz short range device (SRD) G4 band for Europe&lt;br /&gt;
* 4 km RF LOS w/ u.fl antennas&lt;br /&gt;
* 5 mW EIRP&lt;br /&gt;
* 10 or 80 kbps RF data rate&lt;br /&gt;
* price : 18€&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/zigbee-mesh-module/xbee-868lp#overview http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/zigbee-mesh-module/xbee-868lp#overview]&lt;br /&gt;
&lt;br /&gt;
==== Trial ====&lt;br /&gt;
&lt;br /&gt;
With a quickly crafted and not optimal positioned antenna on the airframe we managed to get the advertised 4000 meter range. Data throughput was not high and the Iridium Telemetry XML configuration document was therefore used. All in all, cheap, easy to setup, pin compatible with regular modules and quite a range and usable in Europe without hassle.&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro 900HP  ===&lt;br /&gt;
* Frequency band 900Mhz&lt;br /&gt;
* RF rate 10 or 200 kbps&lt;br /&gt;
* up to 250mW output power&lt;br /&gt;
* 5 to 8 gramm&lt;br /&gt;
* price: 32€&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
[http://ftp1.digi.com/support/documentation/90002173_H.pdf http://ftp1.digi.com/support/documentation/90002173_H.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro XSC 900MHz ===&lt;br /&gt;
&lt;br /&gt;
Maxstream has recently announced a promising new line of modems combining the small size and low cost of their popular Xbee line with the long range and 2.4 GHz video compatibility of their high end 900 MHz models.  Sounds like the perfect modem for anyone who can use 900 MHz.  Give them a try and post your results here!&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:xbeeproxsc-rpsma.jpg|thumb|left|Maxstream XBee Pro XSC]]&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 900 MHz&lt;br /&gt;
* Output Power 100 mW (+20 dBm)&lt;br /&gt;
* Sensitivity  -100 dBm &lt;br /&gt;
* RF Rate: 10 or 20 kbps&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 24km (15 miles) line-of-sight &lt;br /&gt;
* Interface 20-pin mini connector (Xbee compatible pinout)&lt;br /&gt;
* RPSMA, integrated whip antenna or U.FL antenna connector (3 versions)&lt;br /&gt;
* price : 32€&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless/point-multipoint/xbee-pro-xsc.jsp http://www.digi.com/products/wireless/point-multipoint/xbee-pro-xsc.jsp]&lt;br /&gt;
&lt;br /&gt;
==== Trials ====&lt;br /&gt;
Tested one today and it worked great. Going to try a multiUAV test with it soon&lt;br /&gt;
--Danstah&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
MultiUAV tests concluded this is probably not the best module to use. Even though it says you can change the baudrate inside x-ctu that is not the case, it is fixed at 9600 bps. This is a great modem however for single UAV's and I do recommend.&lt;br /&gt;
--Danstah&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Why would the European (868 MHz) be good to 24kbps and this only to 9600?  When I was altering my XBees (2.4Ghz Pro's) I had this problem altering baud rates until I read you have to send a &amp;quot;commit and reboot&amp;quot; type command after setting the baud rate. Could this be the case? --GR&lt;br /&gt;
&lt;br /&gt;
=== Digi 9XTend ===&lt;br /&gt;
&lt;br /&gt;
These larger units have been tested on the 900Mhz band, but are also available in 2.4Ghz.  They are a bit on the heavy side, about 20 grams, but give good performance at range. They have adjustable transmit power settings from 100mW to 1W.  Testing has shown range up to 5.6km (3.5 Miles) with XTend set to 100mW with small 3.1dB dipole antenna.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
[[Image:XTend_USB_RF_Modem.jpg|frame|left|9XTend USB Modem]]&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 900Mhz and 2.4Ghz (2 versions)&lt;br /&gt;
* Output Power 1mW to 1W software selectable&lt;br /&gt;
* Sensitivity  -110 dBm (@ 9600 bps)&lt;br /&gt;
* RF Data Rate 9.6 or 115.2 Kbps&lt;br /&gt;
* Interface data rate up to 230.4 Kbps&lt;br /&gt;
* Power Draw (typical) 730 mA TX / 80 mA RX &lt;br /&gt;
* Supply Voltage 2.8 to 5.5v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 64km line-of-sight &lt;br /&gt;
* Dimensions 36 x 60 x 5mm&lt;br /&gt;
* Weight 18 grams&lt;br /&gt;
* Interface 20-pin mini connector or USB&lt;br /&gt;
* RF connector RPSMA (Reverse-polarity SMA) or MMCX (2 versions)&lt;br /&gt;
* price : 150€&lt;br /&gt;
|&lt;br /&gt;
[[Image:Xtend_module.jpg|frame|left|9XTend OEM Modem]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Pinout ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Maxstream_9XTend_Pinout.gif|thumb|left|Maxstream 9XTend Pinout]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''9XTend 20-pin Header'''''||'''''Name'''''||'''''Tiny Serial-1 Header'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
||1||GND||1 (GND)||Ground &lt;br /&gt;
|-&lt;br /&gt;
||2||VCC||2 (5V)||5V power (150mA - 730mA Supplied from servo bus or other 5V source)&lt;br /&gt;
|-&lt;br /&gt;
||5||RX||8 (TX)||3-5V TTL data input - connect to Tiny TX&lt;br /&gt;
|-&lt;br /&gt;
||6||TX||7 (RX)||5V TTL data output - connect to Tiny RX&lt;br /&gt;
|-&lt;br /&gt;
||7||Shutdown||2||This pin must be connected to the 5V bus for normal operation&lt;br /&gt;
|}&lt;br /&gt;
Notes:&amp;lt;br&amp;gt;&lt;br /&gt;
* 9XTend can run on voltages as low as 2.8V but users are strongly advised against connecting any modem (especially high power models) to the sensitive 3.3V bus supplying the autopilot processor and sensors.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.maxstream.net/products/xtend/oem-rf-module.php product page]&lt;br /&gt;
* [http://www.maxstream.net/products/xtend/datasheet_XTend_OEM_RF-Module.pdf datasheet]&lt;br /&gt;
* [http://www.maxstream.net/products/xtend/product-manual_XTend_OEM_RF-Module.pdf user manual]&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
These modems need to be carefully configured based on your usage scenario to obtain the best possible range and link quality. In addition, it is always good to make sure the firmware is up to date.&lt;br /&gt;
&lt;br /&gt;
Some typical configurations that may work well, but can still depend your particular situation, are given below. For further details, be sure to consult the XTend users manual. Your application may need a different or modified configuration. The radiomodems do not need identical settings and can in fact be optimized with different settings. A good example is delays and retries: if each radio has the same number of retries and no delay, when a collision occurs each will continuously try to re-transmit, locking up the transmission for some time with no resolution or successful packet delivery. Instead, it is best to set the module whose data should have a lower latency to have no delay and a lower number of retries, while the other module has a delay set (RN &amp;gt; 0) and a greater number of retries. See acknowledged mode example below.&lt;br /&gt;
&lt;br /&gt;
* Acknowledged Polling Mode ('''Recommended'''):&lt;br /&gt;
** This causes one radio to be the base and the other(s) to be the remote(s). It eliminates collisions because remotes do not send data unless requested by the base. It can work in acknowledged mode (RR&amp;gt;0), basic reliable mode (MT&amp;gt;0) or in basic mode (no acknowledgement or multiple packets). It is recommended that the lower latency and/or higher data rate side be configured as the base (i.e. if you are sending lots of telemetry then the air module configured as the base is probably a good idea, but if you are using datalink joystick control, the ground side might be better as the base. It may require some experimentation).&lt;br /&gt;
* Acknowledged Point-to-(Multi)Point Mode:&lt;br /&gt;
** Each radio sends a packet and requests and acknowledgement that the packet was sent from the receiving side. The retries and delays must be set appropriately to ensure packet collisions are dealt with appropriately. It can also work without acknowledgements in basic reliable mode (MT&amp;gt;0) without any acknowledgements (RR=0, MT=0). Some experimentation may be required.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''Setting Name'''''||colspan=&amp;quot;2&amp;quot;|'''''Acknowledged Mode'''''||colspan=&amp;quot;2&amp;quot;|'''''Polling Mode (Acknowledged)'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
|| ||'''''Airside Module'''''||'''''Groundside Module'''''||'''''Base Module'''''||'''''Remote Module'''''||&lt;br /&gt;
|-&lt;br /&gt;
||BD||6||6||6||6||Adjust to match your configured autopilot and ground station baud rates (default for these is 57600bps)&lt;br /&gt;
|-&lt;br /&gt;
||DT||default||default||0x02||0x01||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||MD||default||default||3 (0x03)||4 (0x04)||&lt;br /&gt;
|-&lt;br /&gt;
||MT||0||0||0||0||Use this to enable Basic Reliable transmission, link bandwidth requirement increases (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||MY||default||default||0x01||0x02||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PB||default||default||0x02||default||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PD||default||default||default||default||Can be adjusted to increase polling request rate and DI buffer flush timeout (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PE||default||default||0x02||default||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PL||default||default||default||default||''Transmit power level should be reduced for lab testing!!''&lt;br /&gt;
|-&lt;br /&gt;
||RN||0 (0x00)||8 (0x08)||default||default||&lt;br /&gt;
|-&lt;br /&gt;
||RR||6 (0x06)||12 (0x0C)||6 (0x06)||12 (0x0C)||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All settings are assumed to be default except those listed. Those listed are in decimal unless hex 0x prefix included. Depending on your firmware version, slight modifications may be necessary.&lt;br /&gt;
&lt;br /&gt;
Here is some additional information and alternative instructions to configure the polling mode from the Digi site: [http://www.digi.com/support/kbase/kbaseresultdetl?id=2178 Polling Mode for the 9XTend Radio Modem]&lt;br /&gt;
&lt;br /&gt;
== SiLabs Si1000 SoC based modems ==&lt;br /&gt;
&lt;br /&gt;
The Si1000 radio System on Chip (SOC) produced by  SiLabs is found in a number of radio modules, for example the cheap and widely used HopeRf module. There is [https://github.com/tridge/SiK open source firmware] for these radios which makes them suitable for use in MAVs. &lt;br /&gt;
&lt;br /&gt;
Note that (unlike some XBee modules) the SiK firmware does not support mesh topologies, it is strictly a point-to-point link. If you are working with swarming vehicles they may not be the best choice.&lt;br /&gt;
&lt;br /&gt;
Online documentation for the Sik firmware shows how to configure it for various jurisdictions. The firmware supports 433 MHz, 470 MHz, 868 MHz and 900 MHz radios, if you are aware of any hardware supporting the European spectrum licences (868 MHz) please add them to this wiki.&lt;br /&gt;
&lt;br /&gt;
Note: When using a SiK firmware radio with paparazzi, you should set &amp;quot;ATS6=0&amp;quot; (MavLink packing off) and configure paparazzi for transparent serial mode.&lt;br /&gt;
&lt;br /&gt;
[http://www.rfdesign.com.au/index.php/rfd900 This module] is well proven and supports antenna diversity. A combination of 6dbi Yagi plus a dipole on the ground station, with a pair of  orthogonality oriented dioples in the airframe, has been extensively tested and proven reliable at &amp;gt;8km range (theoretical range of ~40km).&lt;br /&gt;
&lt;br /&gt;
Alternatively, for shorter range a pair of cheap generic HopeRF-based modems [http://rctimer.com/index.php?gOo=goods_details.dwt&amp;amp;goodsid=815 such as these]&lt;br /&gt;
&lt;br /&gt;
The RFD900 can be paired with cheap generic (single front-end) modules, if for example you use a small short range airframe with a ground station that's also used for long range operations.&lt;br /&gt;
&lt;br /&gt;
== Laird (ex Aerocom) ==&lt;br /&gt;
Lairds's API mode is already implemented but some system integration is required. Full API more with addressed packets works well and was tested with AC4790-1x1 5mW low power modules. Maximim range achieved with a whip quater-wave antenna was 1Km.&lt;br /&gt;
&lt;br /&gt;
How to use this modem on ground station side? [http://paparazzi.enac.fr/wiki/index.php/User:SilaS#SDK-AC4868-250_ground_modem_part]&lt;br /&gt;
&lt;br /&gt;
See folder paparazzi3 / trunk / sw / aerocomm. It has all the required files to use this modem on the airborne and ground station side. The link.ml file is a direct replacement of the &amp;quot;main&amp;quot; link.ml file of the ground sttaion and will be merged into it in the future.. or you can do it as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
=== AC4790-200 ===&lt;br /&gt;
* Frequency 902-928MHz (North America, Australia, etc).&lt;br /&gt;
* Output Power 5-200mW&lt;br /&gt;
* Sensitivity (@ full RF data rate) -110dB&lt;br /&gt;
* RF Data Rate up to 76.8 Kbps&lt;br /&gt;
* INterface Data Rate Up to Up to 115.2 Kbps &lt;br /&gt;
* Power Draw (typical) 68 mA&lt;br /&gt;
* Supply Voltage 3.3v &amp;amp; 5.5V&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 6.4 kilometers line-of-sight &lt;br /&gt;
* Dimensions 42 x 48 x 5mm &lt;br /&gt;
* Weight &amp;lt; 20 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Antenna MMCX jack Connector or internal&lt;br /&gt;
* price : 52€&lt;br /&gt;
|&lt;br /&gt;
[[Image:ac4868_transceiver.jpg|thumb|left|AC4868 OEM Modem]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
=== AC4790-1000 ===&lt;br /&gt;
* Frequency 902-928MHz (North America, Australia, etc).&lt;br /&gt;
* Output Power 5-1000mW&lt;br /&gt;
* Sensitivity (@ full RF data rate) -99dB&lt;br /&gt;
* RF Data Rate up to 76.8 Kbps&lt;br /&gt;
* INterface Data Rate Up to Up to 115.2 Kbps &lt;br /&gt;
* Power Draw (typical) 650 mA&lt;br /&gt;
* Supply Voltage 3.3V only&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 32 kilometers with high-gain antenna&lt;br /&gt;
* Dimensions 42 x 48 x 5mm &lt;br /&gt;
* Weight &amp;lt; 20 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Antenna MMCX jack Connector&lt;br /&gt;
* price : 64€&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Aerocomm_AC4868_pinout.jpg|thumb|left|Laird AC4868 modem pinout]]&lt;br /&gt;
[[Image:Aerocomm_AC4490-200_wired.jpg|thumb|left|Laird AC4490 wiring example]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Wiring the Laird AC4868 to the Tiny&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''AC4868 20-pin Header'''''||'''''Name'''''||'''''Color'''''||'''''Tiny v1.1 Serial-1'''''||'''''Tiny v2.11 Serial'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
||2||Tx||green||7||7||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||3||Rx||blue||8||8||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||5||GND||black||1||1|| -&lt;br /&gt;
|-&lt;br /&gt;
||10+11||VCC||red||2||3||+3.3v ''(Note 2)''&lt;br /&gt;
|-&lt;br /&gt;
||17||C/D||white||3||?||Low = Command High = Data&lt;br /&gt;
|}&lt;br /&gt;
''Note 1 : names are specified with respect to the AEROCOMM module''&lt;br /&gt;
&lt;br /&gt;
''Note 2 : AC4790-1000 needs pins 10 and 11 jumped to work properly''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Laird RM024 ===&lt;br /&gt;
[[Image:Laird_LT2510_RM024-P125-C-01-side.jpg|thumb|RM024 P125]]&lt;br /&gt;
[[Image:Lt2510_prm123.jpg|thumb|LT2510 Modem]]&lt;br /&gt;
The RM024 replaces the discontinued LT2510 (they are backwards compatible).&lt;br /&gt;
&lt;br /&gt;
General features:&lt;br /&gt;
* Frequency Band 2.4GHz&lt;br /&gt;
* Output Power 2,5mW - 125mW&lt;br /&gt;
* Sensitivity  -98dbm @ 280kbps/-94 dBm @ 500kbps&lt;br /&gt;
* RF Data Rate 280/500 kbps&lt;br /&gt;
* UART up to 460800 baud&lt;br /&gt;
* Power Draw 90mA - 180mA TX / 10mA RX&lt;br /&gt;
* Supply Voltage 3.3v&lt;br /&gt;
* Range up to 4000m&lt;br /&gt;
* Dimensions 26 x 33 x 4mm&lt;br /&gt;
* Weight 4 grams&lt;br /&gt;
* Interface 20-pin mini connector (smd solder pad or XBee compatible pin header)&lt;br /&gt;
* Chip antenna, U.FL antenna connector or both&lt;br /&gt;
* Price: 29-31€ @ mouser (SMD / XBEE header)&lt;br /&gt;
&lt;br /&gt;
Two different mounting/pinuts are available:&amp;lt;br/&amp;gt;&lt;br /&gt;
* smd version: can be soldered on a pcb&amp;lt;br/&amp;gt;&lt;br /&gt;
* pin header: standard XBEE pinout (this is the SMD version mounted on a seperate pcb with male pin headers)&lt;br /&gt;
&lt;br /&gt;
Available in two different output power versions:&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||''value''||''50mW version''||''125mW version''&lt;br /&gt;
|-&lt;br /&gt;
|output power&lt;br /&gt;
| 2,5 mW - 50 mW&lt;br /&gt;
| 2,5 mW - 125 mW&lt;br /&gt;
|-&lt;br /&gt;
|output power dbm&lt;br /&gt;
|4 dbm - 17 dbm&lt;br /&gt;
|4 dbm - 21 dbm&lt;br /&gt;
|-&lt;br /&gt;
|TX drain&lt;br /&gt;
|90mA&lt;br /&gt;
|&amp;lt;180mA&lt;br /&gt;
|-&lt;br /&gt;
|max range (280kbps with 2 dbi antenna)&lt;br /&gt;
|2400m&lt;br /&gt;
|4000m&lt;br /&gt;
|-&lt;br /&gt;
|approval&lt;br /&gt;
|CE for EU, FCC/IC for USA,&lt;br /&gt;
Canada PRM122/123 also for Japan&lt;br /&gt;
|FCC/IC for USA, Canada &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The RM024 uses frequency hopping (FHSS) which needs a client/server model. That means that one modem (most appropriately the ground station modem) needs to be set to server mode. It will transmit a beacon message and have all client modems synchronize to that in a time and frequency hopping scheme manner. For that all modems need to have the same channel (in fact the hopping scheme) and system-id. Clients can be set to auto-channel and auto-system-id to follow any/the first visible server.&lt;br /&gt;
&lt;br /&gt;
====Documentation====&lt;br /&gt;
[http://www.lairdtech.com/WorkArea/DownloadAsset.aspx?id=2147488576 RM024 User Manual]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.lairdtech.com/WorkArea/linkit.aspx?LinkIdentifier=id&amp;amp;ItemID=4379 LT2510 User Manual]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.lairdtech.com/zips/Developer_Kit.zip Windows configuration tool]&lt;br /&gt;
&lt;br /&gt;
'''Setup'''&lt;br /&gt;
&lt;br /&gt;
Look at the [[Laird_Setup page]]&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
These modems do not give you a great range but Bluetooth can be found in a lot of recent laptops built-in. Maybe not useful for fixed wing aircrafts it might be used for in-the-shop testing or quadcopters. Make sure you get a recent Class 1 EDR 2.0 stick if you buy one for your computer.&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
=== RN-41 Bluetooth module(Sparkfun's WRL-08497) ===&lt;br /&gt;
* Frequency Band 2.4GHz&lt;br /&gt;
* Output Power 32 mW &lt;br /&gt;
* RF Data Rate up to ~300 kbps in SPP&lt;br /&gt;
* Interface Data Rate up to 921 kbps &lt;br /&gt;
* Power Draw (typical) 50 mA TX / 40 mA RX &lt;br /&gt;
* Supply Voltage 3.3v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) 100 meters line-of-sight &lt;br /&gt;
* Dimensions 26 x 13 x 2mm &lt;br /&gt;
* Weight ~1.5 grams&lt;br /&gt;
* Interface solder connector  &lt;br /&gt;
* price : 20€&lt;br /&gt;
|&lt;br /&gt;
[[Image:roving_nw_wiring.jpg|thumb|Roving Networks modem wiring]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
To connect to it, get the MAC address of the bluetooth modem&lt;br /&gt;
&lt;br /&gt;
 me@mybox:~$ hcitool scan&lt;br /&gt;
 Scanning ...&lt;br /&gt;
        00:06:66:00:53:AD       FireFly-53AD&lt;br /&gt;
&lt;br /&gt;
either make a virtual connection to a Bluetooth serial port each time you connect&lt;br /&gt;
&lt;br /&gt;
 sudo rfcomm bind 0 00:06:66:00:53:AD&lt;br /&gt;
&lt;br /&gt;
or configure it once in /etc/bluetooth/rfcomm.conf&lt;br /&gt;
&lt;br /&gt;
 rfcomm0 {&lt;br /&gt;
   bind yes;&lt;br /&gt;
   device 00:06:66:00:53:AD;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
now you can use Bluetooth as '''/dev/rfcomm0''' with the Paparazzi 'link'. You might need to restart 'link' in case you get out of range and it disconnects (tbd). Set the Tiny serial speed to 115200 as the modules come preconfigured to that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Telemetry via Video Transmitter==&lt;br /&gt;
&lt;br /&gt;
[[Image:video_tx_small.jpg|thumb|2.4GHz Video Transmitter]]&lt;br /&gt;
In order for the UAV to transmit video from an onboard camera, an analog video transmitter can be used.  These vary in power, and thus range, and run normally on 2.4Ghz.  Small UAVs can get about 600m of range from the 50mW version, and extended range can be achieved using units up to 1W.  Weight for these units varies from a couple grams to about 30 for the 1W with shielding.  Please check for your countries regulations on 2.4Ghz transmission, as each is different. &lt;br /&gt;
&lt;br /&gt;
It is possible to use the audio channel to send simple telemetry data to the groundstation. Uploading telemetry not possible via analog audio transmitter only.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Telemetry via Internet / Raspberry Pi==&lt;br /&gt;
Not ready yet...&lt;br /&gt;
&lt;br /&gt;
The main link works over the internet and mobile internet.&lt;br /&gt;
&lt;br /&gt;
Most UMTS sticks don't have a own public IP adress and can't be used as a server. The ssh connection must be reversed(ssh server runs on the gcs, not on the uav)&lt;br /&gt;
&lt;br /&gt;
How to:&lt;br /&gt;
*Establish the connection between a UMTS stick and the Raspberry PI, search for each programm for seperate instructions, these on instructables aren't complete ! [http://www.instructables.com/id/Raspberry-Pi-as-a-3g-Huawei-E303-wireless-Edima/#step1 Instructables site]&lt;br /&gt;
&lt;br /&gt;
A android smartphone is another way to provide the Raspberry pi with a internet connection. [http://www.therasberrypi.com/how-to-usb-tether-android-to-your-raspberry-pi Android USB thetering setup]&lt;br /&gt;
&lt;br /&gt;
*set up ser2net&lt;br /&gt;
*set up static ip adress (public) of your gcs [http://www.cyberciti.biz/tips/howto-ubuntu-linux-convert-dhcp-network-configuration-to-static-ip-configuration.html static IP Ubuntu]&lt;br /&gt;
*set up reverse ssh tunnel [http://www.tunnelsup.com/tup/2013/05/08/raspberry-pi-phoning-home-using-a-reverse-remote-ssh-tunnel ssh reverse serial tunnel]&lt;br /&gt;
&lt;br /&gt;
*connect Raspberry PI with AP over UART (Raspberry Pi's UART Pins are only 3.3v and not 5v tollerant)&lt;br /&gt;
== Old / not supported ==&lt;br /&gt;
Modules in these cathegory have issues with paparazzi are discontinued by the manufacturer.&lt;br /&gt;
Maybe hey will be deleted soon.&lt;br /&gt;
&lt;br /&gt;
=== Laird / Aerocom AC4868-250 ===&lt;br /&gt;
'''This module was discontinued by the manufacturer'''&lt;br /&gt;
[[Image:ConnexLink_USB_RF_Modem.jpg|thumb|Aerocomm USB Stand-alone Modem]]&lt;br /&gt;
* Frequency Band 868MHz (For Europe). 868MHz is a limited band. Please read the [[868MHz Issues]]&lt;br /&gt;
* Output Power (w/ 2dBi antenna) 250 mW &lt;br /&gt;
* Sensitivity (@ full RF data rate) -103 dB &lt;br /&gt;
* RF Data Rate Up to 28.8 Kbps &lt;br /&gt;
* INterface Data Rate Up to 57.6 Kbps &lt;br /&gt;
* Power Draw (typical) 240 mA TX / 36 mA RX &lt;br /&gt;
* Supply Voltage 3.3v &amp;amp; 5V or 3.3v only&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 15 kilometers line-of-sight &lt;br /&gt;
* Dimensions 49 x 42 x 5mm &lt;br /&gt;
* Weight &amp;lt; 21 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Antenna MMCX jack Connector &lt;br /&gt;
* price : 64€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Radiotronix ===&lt;br /&gt;
These Radiotronix modems are used in transparent mode. Use the WI232EUR Evaluation Software for configuring the modems for the set speed. Connect /CMD and CTS for programming. The DTS version for the US market might cause severe interference with GPS reception, it is not recommended. For a nice ground station modem just add a FTDI232 USB-&amp;gt;serial cable, a 3.3V regulator with 100nF capacitors from supplies to ground, solder a SMA cable/connector and put it in a nice case. Make sure you only connect RTS to /CMD if you want to reprogram the modem with the Evaluation software (see the open jumper connection in the picture, green wire) and leave it floating otherwise as connected RTS/CTS sporadically leads to a reprogramming of the modem. The ANT-GXD105-FME/F from [http://www.roundsolutions.com Roundsolutions] was used as a ground station antenna at many competitions. Note that a 1/2 wave dipole antenna works best on-board as it doesn't require a ground-plane and has a reasonably omnidirectional radiation pattern.&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
==== WI232EUR ====&lt;br /&gt;
'''This Module has been discontinued by the manufacturer'''&lt;br /&gt;
* Frequency Band: 868 MHz (for Europe)&lt;br /&gt;
* Output Power: 32 mW &lt;br /&gt;
* RF Data Rate: Up to 76.8 kbps &lt;br /&gt;
* Interface Data Rate: up to 115.2 kbps &lt;br /&gt;
* Power Draw (typical): 65 mA TX / 20 mA RX &lt;br /&gt;
* Supply Voltage: 3.3v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment): 500 meters line-of-sight &lt;br /&gt;
* Dimensions: 24 x 21 x 4mm &lt;br /&gt;
* Weight: ~2 grams&lt;br /&gt;
* Interface: solder connector  &lt;br /&gt;
* Antenna: solder connector &lt;br /&gt;
* Price: ~25$&lt;br /&gt;
[[Image:Wi232eur_wiring.jpg|thumb|WI232EUR Modem (picture shows connection to Tiny 1.1)]]&lt;br /&gt;
&lt;br /&gt;
==== Pinout ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Wiring the WI232EUR to the Tiny v1.1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''WI232 pins'''''||'''''Name'''''||'''''Tiny Serial-1'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
||6||TxD||7||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||5||RxD||8||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||15-18||GND||1|| - &lt;br /&gt;
|-&lt;br /&gt;
||19||VCC||2||+3.3v&lt;br /&gt;
|-&lt;br /&gt;
||4||/CMD||-||''(Note 2)''&lt;br /&gt;
|-&lt;br /&gt;
||7||CTS||-||''(Note 3)''&lt;br /&gt;
|}&lt;br /&gt;
''Note 1 : names are specified with respect to the Radiotronix module''&lt;br /&gt;
&lt;br /&gt;
''Note 2 : connect to RTS to program device with Evaluation software''&lt;br /&gt;
&lt;br /&gt;
''Note 3 : connect to CTS to program device with Evaluation software''&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
[[Image:Wi232eur_bopla.jpg|thumb|WI232EUR Modem in BOPLA case]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.radiotronix.com/datasheets/new/eur_um.pdf WI232EUR data sheet]&lt;br /&gt;
* [http://www.radiotronix.com/datasheets/new/rk-eur_um.pdf WI232EUR user's manual]&lt;br /&gt;
* [http://www.radiotronix.com/downloads/software/EUR/setup.exe Evaluation software]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro 900 ===&lt;br /&gt;
'''These modules have been discontinued by the manufacturer, new version is XBee Pro 900HP'''&lt;br /&gt;
&lt;br /&gt;
XBee Pro 900 modules are long range embedded RF modules for US applications. Purpose-built for exceptional RF performance, XBee-Pro 900 modules are ideal for applications with challenging RF environments, such as urban deployments, or where devices are several kilometers apart.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [ftp://ftp1.digi.com/support/documentation/90000903_a.pdf ftp://ftp1.digi.com/support/documentation/90000903_a.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Coronis WaveCard ===&lt;br /&gt;
&lt;br /&gt;
These relatively inexpensive and light modules implement a Coronis proprietary protocol. Low power consumption - high latency - I would not recommend these modules mostly because of the low quality of the distribution and support. The documentation is rather poor and not easily available.&lt;br /&gt;
&lt;br /&gt;
'''Suport for these modems has been removed from the airborne code on Dec 10th, 2007.'''&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 400MHz, 868Mhz and 915MHz (3 versions)&lt;br /&gt;
* Output Power 25mW and 500mW (2 versions)&lt;br /&gt;
* Sensitivity  -110 dBm (@ 9600 bps)&lt;br /&gt;
* Data Rate 100 Kbps&lt;br /&gt;
* Power Draw (typical) 45mA (25mW), 450mA (500mW) TX / 15 mA RX &lt;br /&gt;
* Supply Voltage ...&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 1km (25mW) , 5km (500mW) line-of-sight &lt;br /&gt;
* Dimensions 30 x 28 x 7mm (25mW), 37 x 30 x 7mm (500mW)&lt;br /&gt;
* 50 ohm RF port for antenna connection&lt;br /&gt;
|&lt;br /&gt;
[[Image:wavecard.jpg|Coronis Wavecard]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.coronis-systems.com/produit.php?lang=EN&amp;amp;id=WCA  www.coronis-systems.com]&lt;br /&gt;
* [[Media:CS-COM-SPRD-WAVECARD-E03B.pdf|Wavecard datasheet]]&lt;br /&gt;
== Antennas ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples of lightweight and efficient 868MHz antennas developped by the RF laboratory at ENAC.&lt;br /&gt;
[[Image:868mhz_twinstar_antenna_1.jpg|thumb|left|868MHz copper foil antenna attached to the aircraft tail]] &lt;br /&gt;
[[Image:868mhz_twinstar_antenna_2.jpg|thumb|left|868MHz copper foil antenna bottom view]] &lt;br /&gt;
[[Image:868mhz_ground_antenna.jpg|thumb|left|868MHz ground antenna]] &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This wiki page might give some ideas about antennas: http://en.wikipedia.org/wiki/Dipole_antenna&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lia&amp;diff=16331</id>
		<title>Lia</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lia&amp;diff=16331"/>
		<updated>2013-11-21T19:32:32Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* Differences from Lisa/M */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Lia''' is a lower cost version of [[Lisa/M]] first developed for inclusion with the [http://wiki.thequadshot.com/wiki/The_Mocha Quadshot Mocha].&lt;br /&gt;
&lt;br /&gt;
== Differences from Lisa/M ==&lt;br /&gt;
&lt;br /&gt;
* 0.1&amp;quot; pitch through-holes instead of molex picoblade&lt;br /&gt;
* No CAN transceiver (footprint still present just not populated) on [http://www.transition-robotics.com Transition Robotics]serial numbers LI1-001 through LI1-200 (populated on serial numbers ≥LI1-201)&lt;br /&gt;
* No I2C2 level shifter (footprint still present just not populated)&lt;br /&gt;
* No 5V voltage regulator (footprint still present just not populated)&lt;br /&gt;
* No JTAG connector (footprint still present just not populated)&lt;br /&gt;
* Added servo power inline resistors (by default 0 ohm but can be changed to higher value for balancing the linear voltage regulators of the motor controllers)&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Lia_1.1_top.jpg|Lia V1.1 top side&lt;br /&gt;
Image:Lia_1.1_bottom.jpg|Lia V1.1 bottom side&lt;br /&gt;
Image:Lia_1.1_aspirin_bottom.jpg|Lia V1.1 bottom side with Aspirin 2.1 nomag nobaro placed.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jumper Configuration ==&lt;br /&gt;
There are a number of jumpers on Lia used to configure voltage levels and power input. Their locations and functions are identical to those on the Lisa/M v2.0.&amp;lt;br/&amp;gt;&lt;br /&gt;
See the [[Lisa/M_v2.0#Jumper_Configuration|Jumper Configuration section on the Lisa/M v2.0 page]].&lt;br /&gt;
&lt;br /&gt;
Note that the default states of JP8 and JP9 are reversed with respect to the defaults of Lisa/M v2.0; that is:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Lia UART1 and UART5 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP8||UART1&amp;amp;5_VCC to V_IN||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP9||UART1&amp;amp;5_VCC to +3V3||OPEN||Connects UART1 and UART5 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
[[Category:Lisa]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16232</id>
		<title>DSM</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16232"/>
		<updated>2013-10-29T18:40:45Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added link to deviation thread&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is DSM (DSM2/DSMX) ==&lt;br /&gt;
DSM2 and DSMX are widely used radio protocols for 2.4GHz spektrum RC transmitters and receivers. It is also used in the [[SuperbitRF]] project as datalink. The protocol makes it possible to have multiple receiver/transmitters in the 2.4GHz spektrum without much interference.&lt;br /&gt;
&lt;br /&gt;
=== The difference between DSM2 and DSMX ===&lt;br /&gt;
There is only a small difference between DSM2 and DSMX, which is the way they hop between different channels. In the DSM2 protocol the transmitter will choose two random channels, where the transmitter will look for the two best channels in the optimal case. In the DSMX protocol the transmitter and receiver both use the transmitter radio chip ID,which is send during the binding process, for generating 23 channels. Each time the transmitter transmits a packet or the receiver receives a packet they will hop to the next channel.&lt;br /&gt;
&lt;br /&gt;
From this information you can conclude that when you use DSM2, and both the channels that were chosen are getting used by a lot of other users your reception will drop enormously. In the DSMX protocol this problem was solved and makes it possible to have a lot more transmitters/receivers at the same bandwidth.&lt;br /&gt;
&lt;br /&gt;
== How does it work ==&lt;br /&gt;
''Note that this is reverse engineered and will contain errors.''&lt;br /&gt;
&lt;br /&gt;
In general you have three phases, the binding procedure, the syncing procedure and the normal transfer procedure. The transmitter doesn't have a syncing procedure, because it determines the timing for the receiver.&lt;br /&gt;
&lt;br /&gt;
=== The binding procedure ===&lt;br /&gt;
At the binding procedure both the transmitter and receiver will change to [[DSM#Definitions|SDR (Single Data Rate) mode]], a data code of 64 bits, a [[DSM#Definitions|SOP (Start Of Packet) Code]] of 64 bits and disable the [[DSM#Definitions|CRC Checksum]]. The transmitter will then choose a random odd channel and starts sending the [[DSM#Binding packet|binding packet]] at a very high rate. The receiver will start at the first odd channel and waits a bit longer then the rate the transmitters sends at. When it does receive a packet, it will check if it is a valid bind packet and goes to syncing mode. When it doesn't receive a valid packet it will go to the next channel and will repeat this.&lt;br /&gt;
&lt;br /&gt;
During the binding procedure the transmitter also sends the amount of RC channels that it has and in which amount of packets this channels will fit. They will either transmit all the channels in one packet or in two packets after each other.&lt;br /&gt;
&lt;br /&gt;
=== The syncing procedure ===&lt;br /&gt;
Because the transmitter doesn't have a syncing procedure, the transmitter is already in the transfer procedure. The receiver on the other hand needs to synchronise itself with the transmitter. &lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== The transfer procedure ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Some general information about the DSM2/DSMX protocol.&lt;br /&gt;
&lt;br /&gt;
=== Definitions ===&lt;br /&gt;
* '''Channel''': The channel in the 2.4GHz band(2.400GHz to 2.483GHz) which is used to transmit or receive. Each channel is 100mHz higher then the previous one starting by 0, and the 2.4GHz band is divided into 98 channels.&lt;br /&gt;
* '''(Transmission) Mode''': The mode at which the transmitter, or receiver is sending/receiving. There are  four different modes the transmitter/receiver could be in: GFSK(Gaussian Frequency Shift Keying), 8DR(Octal Data Rate), DDR(Double Data Rate), SDR(Single Data Rate). The ones used are 8DR and SDR, in SDR mode one bit is encoded in each derived code symbol transmitted. In 8DR mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''GFSK''': Gaussian Frequency Shift Keying Transfer mode. CYRF6936 in this mode data is transmitted at 1 Mbps, without any DSSS.&lt;br /&gt;
* '''8DR''': Octal Data Rate. CYRF6936 in this mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''DDR''': Double Data Rate. CYRF6936 in this mode two bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SDR''': Single Data Rate. CYRF6936 in this mode one bit is encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SOP code''': Start Of Packet code, are one or two bytes which are added at the start of the packet by the radio chip. These bytes are used to identify if a packet is received at a certain channel.&lt;br /&gt;
* '''Packet length''': The packet length(one byte) is send after the SOP code, and only includes the length of the payload data. Because it is one byte the limit of the payload length is 255, but because 8DR and SDR only transmit 16byte packets they will be automatically split up into multiple packets.&lt;br /&gt;
* '''CRC (Checksum)''': The CRC Checksum are two bytes which are send at the end of the packet to check if the received packet was valid. It can detect the following errors: any one bit error, any two bits error, any odd number of bits in error and an error burst as wide as the checksum itself.&lt;br /&gt;
* '''CYRF6936''': A radio chip used in several transmitters and the SuperbitRF project.&lt;br /&gt;
&lt;br /&gt;
=== Packet example ===&lt;br /&gt;
Here is an image of an example packet including the Preamble, SOP, Length, Payload Data and the CRC.&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_packet_example.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Binding packet ===&lt;br /&gt;
The binding packet has a length of 16 bytes, the exact size the SDR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [01] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [02] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [03] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [04] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [05] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [06] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [07] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [08] (sum 00-&amp;gt;07 + 384 - 16) MSB&lt;br /&gt;
 [09] (sum 00-&amp;gt;07 + 384 - 16) LSB&lt;br /&gt;
 [10] 0x01 (not known yet)&lt;br /&gt;
 [11] number of RC channels&lt;br /&gt;
 [12] protocol used (0x01:DSM2 1packet, 0x02: DSM2 2packets, 0x10: DSM2 SuperbitRF, 0x11: DSMX SuperbitRF, 0xA2: DSMX 1packet, 0xB2: DSMX 2packets)&lt;br /&gt;
 [13] 0x00 (not known yet)&lt;br /&gt;
 [14] (sum 00-&amp;gt;13 + 384 - 16) MSB&lt;br /&gt;
 [15] (sum 00-&amp;gt;13 + 384 - 16) LSB&lt;br /&gt;
&lt;br /&gt;
=== Transfer packet ===&lt;br /&gt;
The transfer packet has a length of 16 bytes, the exact size 8DR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 2&lt;br /&gt;
 [01] radio chip ID byte 3 (+packet loss bit in SuperbitRF)&lt;br /&gt;
 [02-15] data&lt;br /&gt;
&lt;br /&gt;
==Raw DSM data capture files==&lt;br /&gt;
&lt;br /&gt;
To aid the understanding of the various DSM protocols, data was captured using the following hardware:&lt;br /&gt;
&lt;br /&gt;
*Main receiver: Spektrum AR9020&lt;br /&gt;
*Satellite receivers: 2x Spektrum 9645 connected to Ant B and Ant R ports&lt;br /&gt;
*[http://www.saleae.com/logic Saleae Logic] set to capture signal wires of satellite receivers:&lt;br /&gt;
**Channel 0 = Ant B&lt;br /&gt;
**Channel 1 = Ant R&lt;br /&gt;
**GROUND = ground of Ant R&lt;br /&gt;
&lt;br /&gt;
The capture data has been split into separate runs to abide by the file size limits of this wiki :-)&lt;br /&gt;
&lt;br /&gt;
The Mac/Win/Linux software to read/parse/export the data is downloadable from the Saleae [http://www.saleae.com/downloads website].&lt;br /&gt;
&lt;br /&gt;
===DSM data 1===&lt;br /&gt;
[[File:DSM_data_1_-_DX7s.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX7s&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 2===&lt;br /&gt;
[[File:DSM_data_2_part_1_-_DX18.zip‎]] (DSM2 runs)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_2_part_2_-_DX18.zip‎]] (DSMX runs)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
**aux3 (7)&lt;br /&gt;
**aux4 (8)&lt;br /&gt;
**aux5 (9)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 3===&lt;br /&gt;
[[File:DSM_data_3_-_DX18_Xplus_channels.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 500 KHz:&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 4===&lt;br /&gt;
[[File:DSM_data_4_part_1_-_DX18_Xplus_channels_12_MHz_capture.zip‎]] (DSM2 run)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_4_part_2_-_DX18_Xplus_channels_12_MHz_capture.zip‎]] (DSMX run)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 12 MHz:&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 5===&lt;br /&gt;
[[File:DSM_data_5_part_1_-_DX18_RSSI.zip‎]] (DSM2 runs)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_5_part_2_-_DX18_RSSI.zip]] (DSMX runs)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18 in range test mode&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 1 MHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
RSSI test:&lt;br /&gt;
&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*TX switched on and set to range test mode&lt;br /&gt;
*Power on RXes/start capture&lt;br /&gt;
*Press range test button (reduce TX power)&lt;br /&gt;
*Move TX away from RX while moving elevator (2) channel repeatedly until servo no longer moves/satellite LEDs are out&lt;br /&gt;
*release range test button (normal TX power)&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
== External References ==&lt;br /&gt;
* [http://www.cypress.com/?docID=28606 CYRF6936 Data Sheet]&lt;br /&gt;
* [http://www.deviationtx.com/ Deviation Firmware]&lt;br /&gt;
* [https://sites.google.com/site/mrdunk/interfacing-cypress-cyrf6936-to-avr-microcontrollers Interfacing with the CYRF6936]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1759502 RCGroups: DSMX Hacking]&lt;br /&gt;
* [http://www.deviationtx.com/forum/7-development/2088-18-channels-for-dsm2-dsmx Deviation forum: 18 channel thread]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=RotorcraftMixing&amp;diff=16140</id>
		<title>RotorcraftMixing</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=RotorcraftMixing&amp;diff=16140"/>
		<updated>2013-10-09T21:04:24Z</updated>

		<summary type="html">&lt;p&gt;Jkg: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describe how to compute &amp;quot;mixing&amp;quot; for an arbitrary multirotors configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:hexa_3D.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction == &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Mixing&amp;quot; consist in converting rotational accelerations commands computed by the autopilot into throttle commands for each of the motor controllers.  &lt;br /&gt;
&lt;br /&gt;
Let us consider a vehicle comprising a set of &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; identical fixed pitch rotors &amp;lt;math&amp;gt;R_i, i \in[1:N]&amp;lt;/math&amp;gt; located at coordinates &amp;lt;math&amp;gt;(X_i,Y_i, 0), i\in[1:N]&amp;lt;/math&amp;gt; and spinning in the same plane in the direction &amp;lt;math&amp;gt;D_i, i\in[1:N], D_i\in[-1;1]&amp;lt;/math&amp;gt; at a rotational speed &amp;lt;math&amp;gt;\omega_i, i\in[1:N]&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Assuming a quasi hovering regime, the force produced by each rotor can be considered normal to the rotor plane and proportional to the square of its rotational speed. Expressed in body frame ( front, right, down ), this leads to&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{F}_{i}^{B} = \begin{pmatrix}0\\0\\-C_t \omega_i^2\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Under the same assumption, the torque produced by each rotor can also be assumed to be in the same direction and proportional to the square of the rotational speed.&lt;br /&gt;
&lt;br /&gt;
The torque produced by each rotor around the CG, expressed in body frame can then be writen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}_{i}^{B} = \begin{pmatrix}X_i\\Y_i\\0\end{pmatrix}\wedge\begin{pmatrix}0\\0\\-C_t \omega_i^2\end{pmatrix} + \begin{pmatrix}0\\0\\D_i C_m \omega_i^2\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}_{i}^{B} =  C_t \omega_i^2 \begin{pmatrix}-Y_i \\X_i \\D_i \frac{C_m}{C_t}\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;math&amp;gt;C_t&amp;lt;/math&amp;gt; is a &amp;quot;thrust&amp;quot; coefficient and &amp;lt;math&amp;gt;Cm&amp;lt;/math&amp;gt; is a &amp;quot;torque&amp;quot; coefficient. It has been measured experimentally that &amp;lt;math&amp;gt;\frac{Ct}{Cm} \approx 10&amp;lt;/math&amp;gt; on a mikrokopter.&lt;br /&gt;
&lt;br /&gt;
As a first approximation we can consider that the rotational speed of the propeller is proportional to the square root of the applied command &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\omega_i^2 = K u_i&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This allows us to express the torque produced by the set of rotors as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B} = \sum_{i=1}^{N} \overrightarrow{M}_{i}^{B} = K C_t&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
                   -\sum_{i=1}^{N} Y_i u_i\\&lt;br /&gt;
                    \sum_{i=1}^{N} X_i u_i\\&lt;br /&gt;
    \frac{C_m}{C_t} \sum_{i=1}^{N} D_i u_i&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which can be rewriten as a matrix vector product&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B}  = &lt;br /&gt;
  K C_t&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
    -Y_1&amp;amp;-Y_2&amp;amp;\ldots&amp;amp;-Y_n\\&lt;br /&gt;
     X_1&amp;amp; X_2&amp;amp;\ldots&amp;amp; X_n\\&lt;br /&gt;
    \frac{C_m}{Ct}D_1&amp;amp;\frac{C_m}{Ct}D_2&amp;amp;\ldots&amp;amp;\frac{C_m}{Ct}D_n&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
 \begin{pmatrix}&lt;br /&gt;
    u_1\\&lt;br /&gt;
    u_2\\&lt;br /&gt;
    \vdots\\&lt;br /&gt;
    u_n&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B}  = A \overrightarrow{U}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; is a &amp;lt;math&amp;gt;3*N&amp;lt;/math&amp;gt; matrix describing the geometric positions of our rotors and &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; is the vector of throttle commands for our set of motor controllers.&lt;br /&gt;
&lt;br /&gt;
In order to express the command applied to each power train as a function of the momentum we want to apply to our vehicle, we need to find &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;, a &amp;lt;math&amp;gt;N*3&amp;lt;/math&amp;gt; matrix such as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{U} = B \overrightarrow{M}^B &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; has rank 3, we know that such a matrix exists (yeah, we can't do 2 rotors or have all rotors aligned), and in this case, we have the relationship&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
  AB = \mathcal{I}_3 &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We know that one solution of this equation is the Moore-Penrose pseudoinverse of &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
Furthermore, this solution is the one leading to the power train command vector having the smallest euclidian norm, which is interesting as it optimizes the repartion of our control effort across our power trains.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Let's consider the following H hexarotors configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:hexa_h.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -0.17 &amp;amp; 0.17 &amp;amp;-0.25&amp;amp; 0.25&amp;amp;-0.33 &amp;amp; 0.33 \\&lt;br /&gt;
   -0.35 &amp;amp;-0.35 &amp;amp; 0   &amp;amp; 0   &amp;amp; 0.35 &amp;amp; 0.35 \\&lt;br /&gt;
   -0.1  &amp;amp; 0.1  &amp;amp; 0.1 &amp;amp;-0.1 &amp;amp;-0.1  &amp;amp; 0.1&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first two lines of the &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; matrix represent the coordinates of each rotor in the &amp;lt;math&amp;gt;X,Y&amp;lt;/math&amp;gt; plane, and the third line the direction in which they spin. Note that in this example the X axis is vertical, and the Y coordinates are in the top row of &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
B = &lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -0.24  &amp;amp; -0.71 &amp;amp; -1.47 \\&lt;br /&gt;
    0.241 &amp;amp; -0.71 &amp;amp;  1.47 \\&lt;br /&gt;
   -0.93  &amp;amp;  0.   &amp;amp;  2.44 \\&lt;br /&gt;
    0.93  &amp;amp;  0.   &amp;amp; -2.44 \\&lt;br /&gt;
   -0.69  &amp;amp;  0.71 &amp;amp; -1.09 \\&lt;br /&gt;
    0.69  &amp;amp;  0.71 &amp;amp;  1.09 &lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalizing columns of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; yelds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\tilde{B} = &lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -67 &amp;amp; -256  &amp;amp; -154 \\&lt;br /&gt;
    67 &amp;amp; -256  &amp;amp;  154 \\&lt;br /&gt;
  -256 &amp;amp;    0  &amp;amp;  256 \\&lt;br /&gt;
   256 &amp;amp;    0  &amp;amp; -256 \\&lt;br /&gt;
  -189 &amp;amp;  256  &amp;amp; -115 \\&lt;br /&gt;
   189 &amp;amp;  256  &amp;amp;  115 \\&lt;br /&gt;
 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which in turns yelds the following supervision section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;section name=&amp;quot;SUPERVISION&amp;quot; prefix=&amp;quot;SUPERVISION_&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;MIN_MOTOR&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;MAX_MOTOR&amp;quot; value=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_A&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_E&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_R&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;NB_MOTOR&amp;quot; value=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;SCALE&amp;quot; value=&amp;quot;256&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;ROLL_COEF&amp;quot;   value=&amp;quot;{ -67,    67, -256,  256, -189,  189}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;PITCH_COEF&amp;quot;  value=&amp;quot;{ -256, -256,    0,    0,  256,  256}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;YAW_COEF&amp;quot;    value=&amp;quot;{ -154,  154,  256, -256, -115,  115}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;THRUST_COEF&amp;quot; value=&amp;quot;{  256,  256,  256,  256,  256,  256}&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above computation can be performed using the following simple octave script (sudo apt-get install octave3.2)&lt;br /&gt;
 octave&lt;br /&gt;
 copy the flowing commands in the terminal: (ncol is the number of col from matrix B. in this example = 3 )&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A = [&lt;br /&gt;
   -0.17  0.17   -0.25  0.25   -0.33   0.33&lt;br /&gt;
  -0.35   -0.35   0.     0.     0.35    0.35&lt;br /&gt;
  -0.1     0.1    0.1   -0.1   -0.1     0.1&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
B = pinv(A)&lt;br /&gt;
&lt;br /&gt;
m = max(abs(B))&lt;br /&gt;
&lt;br /&gt;
[nrow,ncol] = size(B)&lt;br /&gt;
&lt;br /&gt;
for i=1:ncol&lt;br /&gt;
   Btilde(:,i) = B(:,i)/m(i);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Btilde =  round(256*Btilde)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=RotorcraftMixing&amp;diff=16139</id>
		<title>RotorcraftMixing</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=RotorcraftMixing&amp;diff=16139"/>
		<updated>2013-10-09T21:03:48Z</updated>

		<summary type="html">&lt;p&gt;Jkg: clarified axes for example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describe how to compute &amp;quot;mixing&amp;quot; for an arbitrary multirotors configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:hexa_3D.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction == &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Mixing&amp;quot; consist in converting rotational accelerations commands computed by the autopilot into throttle commands for each of the motor controllers.  &lt;br /&gt;
&lt;br /&gt;
Let us consider a vehicle comprising a set of &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; identical fixed pitch rotors &amp;lt;math&amp;gt;R_i, i \in[1:N]&amp;lt;/math&amp;gt; located at coordinates &amp;lt;math&amp;gt;(X_i,Y_i, 0), i\in[1:N]&amp;lt;/math&amp;gt; and spinning in the same plane in the direction &amp;lt;math&amp;gt;D_i, i\in[1:N], D_i\in[-1;1]&amp;lt;/math&amp;gt; at a rotational speed &amp;lt;math&amp;gt;\omega_i, i\in[1:N]&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Assuming a quasi hovering regime, the force produced by each rotor can be considered normal to the rotor plane and proportional to the square of its rotational speed. Expressed in body frame ( front, right, down ), this leads to&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{F}_{i}^{B} = \begin{pmatrix}0\\0\\-C_t \omega_i^2\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Under the same assumption, the torque produced by each rotor can also be assumed to be in the same direction and proportional to the square of the rotational speed.&lt;br /&gt;
&lt;br /&gt;
The torque produced by each rotor around the CG, expressed in body frame can then be writen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}_{i}^{B} = \begin{pmatrix}X_i\\Y_i\\0\end{pmatrix}\wedge\begin{pmatrix}0\\0\\-C_t \omega_i^2\end{pmatrix} + \begin{pmatrix}0\\0\\D_i C_m \omega_i^2\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}_{i}^{B} =  C_t \omega_i^2 \begin{pmatrix}-Y_i \\X_i \\D_i \frac{C_m}{C_t}\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;math&amp;gt;C_t&amp;lt;/math&amp;gt; is a &amp;quot;thrust&amp;quot; coefficient and &amp;lt;math&amp;gt;Cm&amp;lt;/math&amp;gt; is a &amp;quot;torque&amp;quot; coefficient. It has been measured experimentally that &amp;lt;math&amp;gt;\frac{Ct}{Cm} \approx 10&amp;lt;/math&amp;gt; on a mikrokopter.&lt;br /&gt;
&lt;br /&gt;
As a first approximation we can consider that the rotational speed of the propeller is proportional to the square root of the applied command &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\omega_i^2 = K u_i&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This allows us to express the torque produced by the set of rotors as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B} = \sum_{i=1}^{N} \overrightarrow{M}_{i}^{B} = K C_t&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
                   -\sum_{i=1}^{N} Y_i u_i\\&lt;br /&gt;
                    \sum_{i=1}^{N} X_i u_i\\&lt;br /&gt;
    \frac{C_m}{C_t} \sum_{i=1}^{N} D_i u_i&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which can be rewriten as a matrix vector product&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B}  = &lt;br /&gt;
  K C_t&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
    -Y_1&amp;amp;-Y_2&amp;amp;\ldots&amp;amp;-Y_n\\&lt;br /&gt;
     X_1&amp;amp; X_2&amp;amp;\ldots&amp;amp; X_n\\&lt;br /&gt;
    \frac{C_m}{Ct}D_1&amp;amp;\frac{C_m}{Ct}D_2&amp;amp;\ldots&amp;amp;\frac{C_m}{Ct}D_n&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
 \begin{pmatrix}&lt;br /&gt;
    u_1\\&lt;br /&gt;
    u_2\\&lt;br /&gt;
    \vdots\\&lt;br /&gt;
    u_n&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B}  = A \overrightarrow{U}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; is a &amp;lt;math&amp;gt;3*N&amp;lt;/math&amp;gt; matrix describing the geometric positions of our rotors and &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; is the vector of throttle commands for our set of motor controllers.&lt;br /&gt;
&lt;br /&gt;
In order to express the command applied to each power train as a function of the momentum we want to apply to our vehicle, we need to find &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;, a &amp;lt;math&amp;gt;N*3&amp;lt;/math&amp;gt; matrix such as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{U} = B \overrightarrow{M}^B &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; has rank 3, we know that such a matrix exists (yeah, we can't do 2 rotors or have all rotors aligned), and in this case, we have the relationship&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
  AB = \mathcal{I}_3 &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We know that one solution of this equation is the Moore-Penrose pseudoinverse of &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
Furthermore, this solution is the one leading to the power train command vector having the smallest euclidian norm, which is interesting as it optimizes the repartion of our control effort across our power trains.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Let's consider the following H hexarotors configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:hexa_h.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -0.17 &amp;amp; 0.17 &amp;amp;-0.25&amp;amp; 0.25&amp;amp;-0.33 &amp;amp; 0.33 \\&lt;br /&gt;
   -0.35 &amp;amp;-0.35 &amp;amp; 0   &amp;amp; 0   &amp;amp; 0.35 &amp;amp; 0.35 \\&lt;br /&gt;
   -0.1  &amp;amp; 0.1  &amp;amp; 0.1 &amp;amp;-0.1 &amp;amp;-0.1  &amp;amp; 0.1&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first two lines of the &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; matrix represent the coordinates of each rotor in the &amp;lt;math&amp;gt;X,Y&amp;lt;/math&amp;gt; plane, and the third line the direction in which they spin. Note that in this example the Y axis is vertical, and the Y coordinates are in the top row of &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
B = &lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -0.24  &amp;amp; -0.71 &amp;amp; -1.47 \\&lt;br /&gt;
    0.241 &amp;amp; -0.71 &amp;amp;  1.47 \\&lt;br /&gt;
   -0.93  &amp;amp;  0.   &amp;amp;  2.44 \\&lt;br /&gt;
    0.93  &amp;amp;  0.   &amp;amp; -2.44 \\&lt;br /&gt;
   -0.69  &amp;amp;  0.71 &amp;amp; -1.09 \\&lt;br /&gt;
    0.69  &amp;amp;  0.71 &amp;amp;  1.09 &lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalizing columns of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; yelds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\tilde{B} = &lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -67 &amp;amp; -256  &amp;amp; -154 \\&lt;br /&gt;
    67 &amp;amp; -256  &amp;amp;  154 \\&lt;br /&gt;
  -256 &amp;amp;    0  &amp;amp;  256 \\&lt;br /&gt;
   256 &amp;amp;    0  &amp;amp; -256 \\&lt;br /&gt;
  -189 &amp;amp;  256  &amp;amp; -115 \\&lt;br /&gt;
   189 &amp;amp;  256  &amp;amp;  115 \\&lt;br /&gt;
 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which in turns yelds the following supervision section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;section name=&amp;quot;SUPERVISION&amp;quot; prefix=&amp;quot;SUPERVISION_&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;MIN_MOTOR&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;MAX_MOTOR&amp;quot; value=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_A&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_E&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_R&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;NB_MOTOR&amp;quot; value=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;SCALE&amp;quot; value=&amp;quot;256&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;ROLL_COEF&amp;quot;   value=&amp;quot;{ -67,    67, -256,  256, -189,  189}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;PITCH_COEF&amp;quot;  value=&amp;quot;{ -256, -256,    0,    0,  256,  256}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;YAW_COEF&amp;quot;    value=&amp;quot;{ -154,  154,  256, -256, -115,  115}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;THRUST_COEF&amp;quot; value=&amp;quot;{  256,  256,  256,  256,  256,  256}&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above computation can be performed using the following simple octave script (sudo apt-get install octave3.2)&lt;br /&gt;
 octave&lt;br /&gt;
 copy the flowing commands in the terminal: (ncol is the number of col from matrix B. in this example = 3 )&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A = [&lt;br /&gt;
   -0.17  0.17   -0.25  0.25   -0.33   0.33&lt;br /&gt;
  -0.35   -0.35   0.     0.     0.35    0.35&lt;br /&gt;
  -0.1     0.1    0.1   -0.1   -0.1     0.1&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
B = pinv(A)&lt;br /&gt;
&lt;br /&gt;
m = max(abs(B))&lt;br /&gt;
&lt;br /&gt;
[nrow,ncol] = size(B)&lt;br /&gt;
&lt;br /&gt;
for i=1:ncol&lt;br /&gt;
   Btilde(:,i) = B(:,i)/m(i);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Btilde =  round(256*Btilde)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=RotorcraftMixing&amp;diff=16138</id>
		<title>RotorcraftMixing</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=RotorcraftMixing&amp;diff=16138"/>
		<updated>2013-10-09T20:53:28Z</updated>

		<summary type="html">&lt;p&gt;Jkg: fixed signs of first row of matrix A code to correspond to pretty-printed A values; added absolute value to max function to handle case where longest motor arm is negative&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describe how to compute &amp;quot;mixing&amp;quot; for an arbitrary multirotors configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:hexa_3D.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction == &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Mixing&amp;quot; consist in converting rotational accelerations commands computed by the autopilot into throttle commands for each of the motor controllers.  &lt;br /&gt;
&lt;br /&gt;
Let us consider a vehicle comprising a set of &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; identical fixed pitch rotors &amp;lt;math&amp;gt;R_i, i \in[1:N]&amp;lt;/math&amp;gt; located at coordinates &amp;lt;math&amp;gt;(X_i,Y_i, 0), i\in[1:N]&amp;lt;/math&amp;gt; and spinning in the same plane in the direction &amp;lt;math&amp;gt;D_i, i\in[1:N], D_i\in[-1;1]&amp;lt;/math&amp;gt; at a rotational speed &amp;lt;math&amp;gt;\omega_i, i\in[1:N]&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Assuming a quasi hovering regime, the force produced by each rotor can be considered normal to the rotor plane and proportional to the square of its rotational speed. Expressed in body frame ( front, right, down ), this leads to&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{F}_{i}^{B} = \begin{pmatrix}0\\0\\-C_t \omega_i^2\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Under the same assumption, the torque produced by each rotor can also be assumed to be in the same direction and proportional to the square of the rotational speed.&lt;br /&gt;
&lt;br /&gt;
The torque produced by each rotor around the CG, expressed in body frame can then be writen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}_{i}^{B} = \begin{pmatrix}X_i\\Y_i\\0\end{pmatrix}\wedge\begin{pmatrix}0\\0\\-C_t \omega_i^2\end{pmatrix} + \begin{pmatrix}0\\0\\D_i C_m \omega_i^2\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}_{i}^{B} =  C_t \omega_i^2 \begin{pmatrix}-Y_i \\X_i \\D_i \frac{C_m}{C_t}\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;math&amp;gt;C_t&amp;lt;/math&amp;gt; is a &amp;quot;thrust&amp;quot; coefficient and &amp;lt;math&amp;gt;Cm&amp;lt;/math&amp;gt; is a &amp;quot;torque&amp;quot; coefficient. It has been measured experimentally that &amp;lt;math&amp;gt;\frac{Ct}{Cm} \approx 10&amp;lt;/math&amp;gt; on a mikrokopter.&lt;br /&gt;
&lt;br /&gt;
As a first approximation we can consider that the rotational speed of the propeller is proportional to the square root of the applied command &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\omega_i^2 = K u_i&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This allows us to express the torque produced by the set of rotors as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B} = \sum_{i=1}^{N} \overrightarrow{M}_{i}^{B} = K C_t&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
                   -\sum_{i=1}^{N} Y_i u_i\\&lt;br /&gt;
                    \sum_{i=1}^{N} X_i u_i\\&lt;br /&gt;
    \frac{C_m}{C_t} \sum_{i=1}^{N} D_i u_i&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which can be rewriten as a matrix vector product&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B}  = &lt;br /&gt;
  K C_t&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
    -Y_1&amp;amp;-Y_2&amp;amp;\ldots&amp;amp;-Y_n\\&lt;br /&gt;
     X_1&amp;amp; X_2&amp;amp;\ldots&amp;amp; X_n\\&lt;br /&gt;
    \frac{C_m}{Ct}D_1&amp;amp;\frac{C_m}{Ct}D_2&amp;amp;\ldots&amp;amp;\frac{C_m}{Ct}D_n&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
 \begin{pmatrix}&lt;br /&gt;
    u_1\\&lt;br /&gt;
    u_2\\&lt;br /&gt;
    \vdots\\&lt;br /&gt;
    u_n&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\overrightarrow{M}^{B}  = A \overrightarrow{U}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; is a &amp;lt;math&amp;gt;3*N&amp;lt;/math&amp;gt; matrix describing the geometric positions of our rotors and &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; is the vector of throttle commands for our set of motor controllers.&lt;br /&gt;
&lt;br /&gt;
In order to express the command applied to each power train as a function of the momentum we want to apply to our vehicle, we need to find &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;, a &amp;lt;math&amp;gt;N*3&amp;lt;/math&amp;gt; matrix such as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
  \overrightarrow{U} = B \overrightarrow{M}^B &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; has rank 3, we know that such a matrix exists (yeah, we can't do 2 rotors or have all rotors aligned), and in this case, we have the relationship&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
  AB = \mathcal{I}_3 &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We know that one solution of this equation is the Moore-Penrose pseudoinverse of &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
Furthermore, this solution is the one leading to the power train command vector having the smallest euclidian norm, which is interesting as it optimizes the repartion of our control effort across our power trains.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Let's consider the following H hexarotors configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:hexa_h.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -0.17 &amp;amp; 0.17 &amp;amp;-0.25&amp;amp; 0.25&amp;amp;-0.33 &amp;amp; 0.33 \\&lt;br /&gt;
   -0.35 &amp;amp;-0.35 &amp;amp; 0   &amp;amp; 0   &amp;amp; 0.35 &amp;amp; 0.35 \\&lt;br /&gt;
   -0.1  &amp;amp; 0.1  &amp;amp; 0.1 &amp;amp;-0.1 &amp;amp;-0.1  &amp;amp; 0.1&lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first two lines of the &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; matrix represent the coordinates of each rotor in the &amp;lt;math&amp;gt;X,Y&amp;lt;/math&amp;gt; plan, and the third line the direction in which they spin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
B = &lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -0.24  &amp;amp; -0.71 &amp;amp; -1.47 \\&lt;br /&gt;
    0.241 &amp;amp; -0.71 &amp;amp;  1.47 \\&lt;br /&gt;
   -0.93  &amp;amp;  0.   &amp;amp;  2.44 \\&lt;br /&gt;
    0.93  &amp;amp;  0.   &amp;amp; -2.44 \\&lt;br /&gt;
   -0.69  &amp;amp;  0.71 &amp;amp; -1.09 \\&lt;br /&gt;
    0.69  &amp;amp;  0.71 &amp;amp;  1.09 &lt;br /&gt;
  \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalizing columns of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; yelds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\tilde{B} = &lt;br /&gt;
  \begin{pmatrix}&lt;br /&gt;
   -67 &amp;amp; -256  &amp;amp; -154 \\&lt;br /&gt;
    67 &amp;amp; -256  &amp;amp;  154 \\&lt;br /&gt;
  -256 &amp;amp;    0  &amp;amp;  256 \\&lt;br /&gt;
   256 &amp;amp;    0  &amp;amp; -256 \\&lt;br /&gt;
  -189 &amp;amp;  256  &amp;amp; -115 \\&lt;br /&gt;
   189 &amp;amp;  256  &amp;amp;  115 \\&lt;br /&gt;
 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which in turns yelds the following supervision section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;section name=&amp;quot;SUPERVISION&amp;quot; prefix=&amp;quot;SUPERVISION_&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;MIN_MOTOR&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;MAX_MOTOR&amp;quot; value=&amp;quot;200&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_A&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_E&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;TRIM_R&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;NB_MOTOR&amp;quot; value=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;SCALE&amp;quot; value=&amp;quot;256&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;ROLL_COEF&amp;quot;   value=&amp;quot;{ -67,    67, -256,  256, -189,  189}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;PITCH_COEF&amp;quot;  value=&amp;quot;{ -256, -256,    0,    0,  256,  256}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;YAW_COEF&amp;quot;    value=&amp;quot;{ -154,  154,  256, -256, -115,  115}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;THRUST_COEF&amp;quot; value=&amp;quot;{  256,  256,  256,  256,  256,  256}&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above computation can be performed using the following simple octave script (sudo apt-get install octave3.2)&lt;br /&gt;
 octave&lt;br /&gt;
 copy the flowing commands in the terminal: (ncol is the number of col from matrix B. in this example = 3 )&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A = [&lt;br /&gt;
   -0.17  0.17   -0.25  0.25   -0.33   0.33&lt;br /&gt;
  -0.35   -0.35   0.     0.     0.35    0.35&lt;br /&gt;
  -0.1     0.1    0.1   -0.1   -0.1     0.1&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
B = pinv(A)&lt;br /&gt;
&lt;br /&gt;
m = max(abs(B))&lt;br /&gt;
&lt;br /&gt;
[nrow,ncol] = size(B)&lt;br /&gt;
&lt;br /&gt;
for i=1:ncol&lt;br /&gt;
   Btilde(:,i) = B(:,i)/m(i);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Btilde =  round(256*Btilde)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Modems&amp;diff=16122</id>
		<title>Modems</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Modems&amp;diff=16122"/>
		<updated>2013-10-07T22:18:40Z</updated>

		<summary type="html">&lt;p&gt;Jkg: typos,  corrected xBee pro S1 power&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Paparazzi autopilots generally feature a TTL serial port to interface with any common radio modem.  The bidirectional link provides real-time telemetry and in-flight tuning and navigation commands.  The system is also capable overlaying the appropriate protocols to communicate thru non-transparent devices such as the Coronis Wavecard or Maxstream API-enabled products, allowing for hardware addressing for multiple aircraft or future enhancements such as data-relaying, inter-aircraft communication, RSSI signal monitoring and automatic in-flight modem power adjustment.  Below is a list of some of the common modems used with Paparazzi, for details on configuring your modem see the [[Airframe_Configuration#Telemetry_.28Modem.29|Airframe Configuration]] and [[XBee_configuration|XBee Configuration]] pages.&lt;br /&gt;
&lt;br /&gt;
==General comparison==&lt;br /&gt;
'''This is ONLY a comparison between modules which work acceptably'''&lt;br /&gt;
&lt;br /&gt;
All modules listed here work without issue and are generally available.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;16%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Feature'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_DigiMesh_.2F_802.15.4_.28.22Series_1.22.29|XBee Series 1]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_DigiMesh_.2F_802.15.4_.28.22Series_1.22.29|XBee Pro Series 1]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_ZB_.2F_ZNet_2.5_.28.22Series_2.22.29|XBee Series 2]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_ZB_.2F_ZNet_2.5_.28.22Series_2.22.29|XBee Pro Series 2]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_868LP|XBee 868LP]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_900HP|XBee Pro 900HP]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_XBee_Pro_XSC_900MHz|XBee Pro XSC 900]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Digi_9XTend|Digi 9XTend]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#SiLabs_Si1000_SoC_based_modems|SiLabs Si1000]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#AC4790-200|Aerocom AC4790-200]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#AC4790-1000|Aerocom AC4790-1000]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Laird_.28ex_Aerocomm.29|Laird LT2510 50mW]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#Laird_.28ex_Aerocomm.29|Laird LT2510 125mW]]'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;7%&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''[[Modems#RN-41_Bluetooth_module.28Sparkfun.27s_WRL-08497.29|RN-41 Bluetooth]]'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''frequency'''||2,4GHz||2,4GHz||2,4GHz||2,4GHz||868MHz||900MHz||900mHz||900MHz, 2.4GHz||240-960MHz||900MHz||900MHz||2,4GHz||2,4GHz||2,4GHz&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''output power'''||1mW||63mW (US) 10 mW (Int'l)||2mW||63mW||5mW||250mW||250mW||1mW-1W||max 100mW||5-200mW||5-1000mW||2,5-50mW||2,5-125mW||32mW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''RF speed'''||250kbps||250kbps||250kbps||250kbps||10kbps, 80kbps||10 or 200kbps||10, 20kbps||9.6, 115.2kbps|| ||76.8kbps||76.8kbps||280, 500kbps||280, 500kbps||300kbps&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''antenna'''||chip, wire, rpsma, u.fl||chip, wire, rpsma, u.fl||chip, wire, rpsma, u.fl||chip, wire, rpsma, u.fl||external required||wire, rpsma, u.fl||wire, rpsma, u.fl||rpsma, MMCX||external required||MMCX, internal Antenna||MMCX||u.fl, chip||u.fl, chip||pcb trace&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''pinout'''||XBee||XBee||XBee||XBee||SMD||XBee||XBee||20 pin 2,54mm/USB||SMD (42 pin LGA)||20 pin mini connector||20 pin mini connector||XBee/SMD||XBee/SMD||SMD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''price'''||16€||26€||14€||28€||18€||32€||32€||150€||4€||52€||64€||30€||30€||20€&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|'''for Country'''||Worldwide||Worldwide||Worldwide||Worldwide||Europe|| || ||Worldwide||Worldwide||North America, Australia||North America, Australia||Europe||North America||Worldwide&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Digi XBee modules ==&lt;br /&gt;
&lt;br /&gt;
Digi (formerly Maxstream) offers an increasing variety of Zigbee protocol modems well suited for Paparazzi in 2.4 GHz, 900MHz and 868Mhz frequencies.  The &amp;quot;Pro&amp;quot; series are long range, up to 40km!  Standard series are slightly smaller/lighter/lower power consumption and very short range.  All versions are all pin compatible and weigh around 2 grams with wire antennas.  All Digi modems can be operated in transparent mode (as a serial line replacement) or in &amp;quot;API mode&amp;quot; with hardware addressing, managed networking, and RSSI (signal strength) data with the Paparazzi &amp;quot;Xbee&amp;quot; option.  Three antenna options are offered: the SMA version is ideal for ground modems, wire antennas for aircraft, and chip antennas for those with very limited space.&lt;br /&gt;
&lt;br /&gt;
* XBee (PRO) ZB (the current series)&lt;br /&gt;
* XBee (PRO) ZNet 2.5 (formerly Series 2) (only legacy -&amp;gt; use XBee-PRO ZB)&lt;br /&gt;
The XBee &amp;amp; XBee-PRO ZB share hardware (ember stack) with XBee &amp;amp; XBee-PRO ZNet 2.5. As a result, modules can be &amp;quot;converted&amp;quot; from one platform to another by loading different firmware onto a given module.&lt;br /&gt;
&lt;br /&gt;
These two also share the same hardware and can be converted from one to another by flashing a different firmware:&lt;br /&gt;
* XBee-PRO 802.15.4 (formerly Series 1)&lt;br /&gt;
* XBee-PRO DigiMesh 2.4&lt;br /&gt;
&lt;br /&gt;
'''Note: Modules based on Freescale chipset (formerly Series 1) are not compatible with Ember chipset based modules (Series 2).'''&lt;br /&gt;
&lt;br /&gt;
See the [[XBee_configuration|XBee Configuration]] page. This [http://pixhawk.ethz.ch/tutorials/how_to_configure_xbee tutorial] is also good to configure and get started with XBee Pro.&lt;br /&gt;
&lt;br /&gt;
=== Module Comparison ===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''Module'''||'''Point-to-Multipoint'''||'''ZigBee/Mesh'''||'''Chipset'''|||'''Software stack'''||'''Frequency'''||'''TX Power normal/PRO'''||'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee ZB'''&lt;br /&gt;
|&lt;br /&gt;
|yes&lt;br /&gt;
|Ember&lt;br /&gt;
|EmberZNet PRO 3.1 (ZigBee 2007)&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|2mW/50mW&lt;br /&gt;
|coordinator needed&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee ZNet 2.5'''&lt;br /&gt;
|&lt;br /&gt;
|yes&lt;br /&gt;
|Ember&lt;br /&gt;
|EmberZNet 2.5 ZigBee&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|2mW/50mW&lt;br /&gt;
|(only legacy -&amp;gt; use XBee-PRO ZB) coordinator needed&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee DigiMesh 2.4'''&lt;br /&gt;
|&lt;br /&gt;
|yes&lt;br /&gt;
|Freescale&lt;br /&gt;
|&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|&lt;br /&gt;
|all nodes equal (no special coordinators/routers/end-devices)&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee 802.15.4'''&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|Freescale&lt;br /&gt;
|&lt;br /&gt;
|2.4 GHz&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''XBee-PRO 868'''&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|?&lt;br /&gt;
|&lt;br /&gt;
|868 MHz&lt;br /&gt;
|500mW&lt;br /&gt;
|Only High Power Frequency allowed in the UK. 2.4GHz limited to 10mW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Comparison Conclusion ====&lt;br /&gt;
&lt;br /&gt;
(Copied from DIGI manual)&lt;br /&gt;
&lt;br /&gt;
''If the application strictly needs to communicate in a point-to-point or a point-to-multipoint &lt;br /&gt;
fashion, 802.15.4 will be able handle all the communications between your devices and will &lt;br /&gt;
be simpler to implement than trying to use a module with ZigBee firmware to accomplish the &lt;br /&gt;
same goal. ZigBee is necessary if you need to use repeating or the mesh networking &lt;br /&gt;
functionality.'' &lt;br /&gt;
&lt;br /&gt;
-Interpretation for paparazzi: if inter-aircraft communication is required one should go for the zigbee ZB series 2 modules. &lt;br /&gt;
&lt;br /&gt;
==== Pinout ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Maxstream_Xbee_pinout.jpg|left|thumb|Maxstream XBee pinout]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||''Xbee 20-pin Header''||''Name''||''Notes''||''Suggested Color''||&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
| +3.3v&lt;br /&gt;
| Power&lt;br /&gt;
|Red&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|DOUT&lt;br /&gt;
|Tx output - connect to Autopilot Rx&lt;br /&gt;
|Green&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|DIN&lt;br /&gt;
|Rx input - connect to Autopilot Tx&lt;br /&gt;
|Blue&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|GND&lt;br /&gt;
| Ground&lt;br /&gt;
|Black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The image view is from above, top, thus NOT at the side where the connector pins come out&lt;br /&gt;
&lt;br /&gt;
Note : DTR and RTS need to be wired for upgrading firmware&lt;br /&gt;
&lt;br /&gt;
=== GCS Adaptation ===&lt;br /&gt;
&lt;br /&gt;
There are several vendors of hardware to connect the ground XBee radio modem to the GCS computer.&lt;br /&gt;
&lt;br /&gt;
====Adafruit====&lt;br /&gt;
&lt;br /&gt;
[[Image:xbeeadapter_LRG.jpg|thumb|left|Adafruit XBee adapter board]][[Image:xbeeadapterftdi_LRG.jpg|thumb|Adafruit XBee adapter with FTDI cable]]&lt;br /&gt;
[http://www.adafruit.com/index.php?main_page=product_info&amp;amp;cPath=29&amp;amp;products_id=126 Adafruit] offers a great adapter board kit for the Xbee modules that includes a 5-3.3V voltage regulator, power and activity LEDs, and pins to connect directly to your FTDI cable for $10!  Some assembly required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Droids====&lt;br /&gt;
&lt;br /&gt;
[[Image:XBee_Simple_Board.jpg|thumb|left|XBee Simple Board]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XBee_USB_Board.jpg|thumb|left|XBee USB Board]]&lt;br /&gt;
&lt;br /&gt;
[http://www.droids.it/cmsvb4/content.php?143-990.001-XBee-Simple-Board XBee Simple Board]&lt;br /&gt;
&lt;br /&gt;
Simpler, lighter, smaller footprint, bit more expensive, comes assembled and tested. --GR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.droids.it/cmsvb4/content.php?152-990.002-XBee-USB-Board XBee USB Board]&lt;br /&gt;
&lt;br /&gt;
For direct connection to USB (no FTDI cable required)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PPZUAV====&lt;br /&gt;
&lt;br /&gt;
[[Image:FTDI_Utility_Board.jpg|thumb|left|FTDI Utility Board 1.0‎]]&lt;br /&gt;
&lt;br /&gt;
[https://mini.ppzuav.com/osc/product_info.php?cPath=13&amp;amp;products_id=111 ppzuav.com]&lt;br /&gt;
&lt;br /&gt;
FTDI Utility Board 1.0 (no FTDI cable required)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sparkfun====&lt;br /&gt;
&lt;br /&gt;
[[Image:XBee_Explorer_USB.jpg|thumb|left|XBee Explorer USB]]&lt;br /&gt;
&lt;br /&gt;
[http://www.sparkfun.com/products/8687 sparkfun.com]&lt;br /&gt;
&lt;br /&gt;
XBee Explorer USB (no FTDI cable required)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro DigiMesh / 802.15.4 (&amp;quot;Series 1&amp;quot;) ===&lt;br /&gt;
*Note: Products based on XBee ZNet 2.5 (formerly Series 2) modules do not communicate with products based on XBee DigiMesh / 802.15.4 (formerly Series 1) modules.&lt;br /&gt;
&lt;br /&gt;
These relatively cheap and light modules implement the [http://www.zigbee.org/en/index.asp ZigBee/IEEE 802.15.4] norm. They allow up to 1.6km (1 mile) range (Paparazzi tested to 2.5km (1.5 miles)). The main drawback of using such 2.4Ghz modules for datalink is that it will interfere with the 2.4Ghz analog video transmitters and a inevitable decrease in range when in proximity to any wifi devices. For the plane, get the whip antenna version if you are not planning to build a custom antenna.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:Xbee_Pro_USB_RF_Modem.jpg|thumb|left|XBee Pro USB Stand-alone Modem (XBP24-PKC-001-UA)]]&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 2.4Ghz&lt;br /&gt;
* Output Power 100mW (Xbee Pro)&lt;br /&gt;
* Sensitivity  -100 dBm &lt;br /&gt;
* RF Data Rate Up to 250 Kbps&lt;br /&gt;
* Interface data rate Up to 115.2 Kbps&lt;br /&gt;
* Power Draw (typical) 214 mA TX / 55 mA RX &lt;br /&gt;
* Supply Voltage 3.3v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 1500m line-of-sight &lt;br /&gt;
* Dimensions 24 x 33mm&lt;br /&gt;
* Weight 4 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Chip antenna, ¼ monopole integrated whip antenna or a U.FL antenna connector (3 versions)&lt;br /&gt;
* Price: 16€, Pro 26€&lt;br /&gt;
|&lt;br /&gt;
[[Image:XBee_pro.jpg|thumb|left|XBee Pro OEM Modem]]&lt;br /&gt;
|}&lt;br /&gt;
Mouser: [http://au.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMtJacPDJcUJYzVn8vIv7g2fIpf5DCzJqko%3d 888-XBP24-PKC-001-UA]&amp;lt;br&amp;gt;&lt;br /&gt;
NOTE: If you wish to use this unit with another XBee type other than the 802.15.4 (i.e. XBee-PRO ZB) then purchase a modem with the U.fl connector.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.maxstream.net/products/xbee/xbee-pro-oem-rf-module-zigbee.php  product page]&lt;br /&gt;
* [http://www.maxstream.net/products/xbee/datasheet_XBee_OEM_RF-Modules.pdf  datasheet]&lt;br /&gt;
* [http://www.maxstream.net/products/xbee/product-manual_XBee_OEM_RF-Modules.pdf  user manual]&lt;br /&gt;
* To program your Xbee you need X-CTU you can download it [http://www.digi.com/support/productdetl.jsp?pid=3352&amp;amp;osvid=57&amp;amp;tp=5&amp;amp;s=316 here]. (only windows)&lt;br /&gt;
* explanation on X-CTU [http://www.ladyada.net/make/xbee/configure.html here].&lt;br /&gt;
* [http://ftp1.digi.com/support/firmware/update/xbee/ Drivers for XB24 and XBP24 modules]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro ZB / ZNet 2.5 (&amp;quot;Series 2&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
The low-power XBee ZB and extended-range XBee-PRO ZB use the ZigBee PRO Feature Set for advanced mesh networking.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:XBee_Pro_2SB.jpg|thumb|left|Digi XBee Pro ZB]]&lt;br /&gt;
|&lt;br /&gt;
* Low-cost, low-power mesh networking&lt;br /&gt;
* Interoperability with ZigBee PRO Feature Set devices from other vendors*&lt;br /&gt;
* Support for larger, more dense mesh networks&lt;br /&gt;
* 128-bit AES encryption&lt;br /&gt;
* Frequency agility&lt;br /&gt;
* Over-the-air firmware updates (change firmware remotely)&lt;br /&gt;
* ISM 2.4 GHz operating frequency&lt;br /&gt;
* XBee: 2 mW (+3 dBm) power output (up to 400 ft RF LOS range)&lt;br /&gt;
* XBee-PRO: 50 mW (+17 dBm) power output (up to 1 mile RF LOS range)&lt;br /&gt;
* RPSMA connector, U.FL connector, Chip antenna, or Wired Whip antenna&lt;br /&gt;
* price : 14€, Pro 28€&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
These are available from Mouser:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://au.mouser.com/Search/Refine.aspx?Keyword=888-XBP24-Z7WIT-004 888-XBP24-Z7WIT-004] XBee-PRO ZB with whip antenna&amp;lt;br&amp;gt;&lt;br /&gt;
[http://au.mouser.com/Search/Refine.aspx?Keyword=XBP24-Z7SIT-004 888-XBP24-Z7SIT-004] XBee-PRO ZB with RPSMA&lt;br /&gt;
&lt;br /&gt;
See [[XBee_configuration|XBee Configuration]] for setup.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless/zigbee-mesh/xbee-zb-module.jsp http://www.digi.com/products/wireless/zigbee-mesh/xbee-zb-module.jsp]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro 868 ===&lt;br /&gt;
&lt;br /&gt;
'''WARNING - THESE MODEMS HAVE A 10% DUTY CYCLE, AND CURRENTLY HAVE SEVERE ISSUES WITH PAPARAZZI'''&lt;br /&gt;
&lt;br /&gt;
868MHz is a limited band. Please read the [[868MHz Issues]]&lt;br /&gt;
&lt;br /&gt;
XBee-PRO 868 modules are long range embedded RF modules for European applications. Purpose-built for exceptional RF performance, XBee-PRO 868 modules are ideal for applications with challenging RF environments, such as urban deployments, or where devices are several kilometers apart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:xbeeproxsc-rpsma.jpg|thumb|left|Maxstream XBee Pro 868]]&lt;br /&gt;
|&lt;br /&gt;
* 868 MHz short range device (SRD) G3 band for Europe&lt;br /&gt;
* Software selectable Transmit Power&lt;br /&gt;
* 40 km RF LOS w/ dipole antennas&lt;br /&gt;
* 80 km RF LOS w/ high gain antennas (TX Power reduced)&lt;br /&gt;
* Simple to use peer-to-peer/point-to-mulitpoint topology&lt;br /&gt;
* 128-bit AES encryption&lt;br /&gt;
* 500 mW EIRP&lt;br /&gt;
* 24 kbps RF data rate&lt;br /&gt;
* price : ~70 USD&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [[XBee_configuration#XBee_Pro_868_MHZ|XBee Configuration]] for setup.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless/point-multipoint/xbee-pro-868.jsp http://www.digi.com/products/wireless/point-multipoint/xbee-pro-868.jsp]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee 868LP ===&lt;br /&gt;
&lt;br /&gt;
XBee 868LP modules are a low-power 868 MHz RF module for use in Europe. The range is shorter than it's brother the XBee PRO-868, but it can use the 868 G4 band with hopping which does not have restrictions on it's duty cycle. This is a big advantage if one want to have a good stream of telemetry data&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:868lp.jpg|thumb|left|XBee 868LP]]&lt;br /&gt;
|&lt;br /&gt;
* 868 MHz short range device (SRD) G4 band for Europe&lt;br /&gt;
* 4 km RF LOS w/ u.fl antennas&lt;br /&gt;
* 5 mW EIRP&lt;br /&gt;
* 10 or 80 kbps RF data rate&lt;br /&gt;
* price : 18€&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/zigbee-mesh-module/xbee-868lp#overview http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/zigbee-mesh-module/xbee-868lp#overview]&lt;br /&gt;
&lt;br /&gt;
==== Trial ====&lt;br /&gt;
&lt;br /&gt;
With a quickly crafted and not optimal positioned antenna on the airframe we managed to get the advertised 4000 meter range. Data throughput was not high and the Iridium Telemetry XML configuration document was therefore used. All in all, cheap, easy to setup, pin compatible with regular modules and quite a range and usable in Europe without hassle.&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro 900HP  ===&lt;br /&gt;
* Frequency band 900Mhz&lt;br /&gt;
* RF rate 10 or 200 kbps&lt;br /&gt;
* up to 250mW output power&lt;br /&gt;
* 5 to 8 gramm&lt;br /&gt;
* price: 32€&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
[http://ftp1.digi.com/support/documentation/90002173_H.pdf http://ftp1.digi.com/support/documentation/90002173_H.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro XSC 900MHz ===&lt;br /&gt;
&lt;br /&gt;
Maxstream has recently announced a promising new line of modems combining the small size and low cost of their popular Xbee line with the long range and 2.4 GHz video compatibility of their high end 900 MHz models.  Sounds like the perfect modem for anyone who can use 900 MHz.  Give them a try and post your results here!&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|[[Image:xbeeproxsc-rpsma.jpg|thumb|left|Maxstream XBee Pro XSC]]&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 900 MHz&lt;br /&gt;
* Output Power 100 mW (+20 dBm)&lt;br /&gt;
* Sensitivity  -100 dBm &lt;br /&gt;
* RF Rate: 10 or 20 kbps&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 24km (15 miles) line-of-sight &lt;br /&gt;
* Interface 20-pin mini connector (Xbee compatible pinout)&lt;br /&gt;
* RPSMA, integrated whip antenna or U.FL antenna connector (3 versions)&lt;br /&gt;
* price : 32€&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.digi.com/products/wireless/point-multipoint/xbee-pro-xsc.jsp http://www.digi.com/products/wireless/point-multipoint/xbee-pro-xsc.jsp]&lt;br /&gt;
&lt;br /&gt;
==== Trials ====&lt;br /&gt;
Tested one today and it worked great. Going to try a multiUAV test with it soon&lt;br /&gt;
--Danstah&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
MultiUAV tests concluded this is probably not the best module to use. Even though it says you can change the baudrate inside x-ctu that is not the case, it is fixed at 9600 bps. This is a great modem however for single UAV's and I do recommend.&lt;br /&gt;
--Danstah&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Why would the European (868 MHz) be good to 24kbps and this only to 9600?  When I was altering my XBees (2.4Ghz Pro's) I had this problem altering baud rates until I read you have to send a &amp;quot;commit and reboot&amp;quot; type command after setting the baud rate. Could this be the case? --GR&lt;br /&gt;
&lt;br /&gt;
=== Digi 9XTend ===&lt;br /&gt;
&lt;br /&gt;
These larger units have been tested on the 900Mhz band, but are also available in 2.4Ghz.  They are a bit on the heavy side, about 20 grams, but give good performance at range. They have adjustable transmit power settings from 100mW to 1W.  Testing has shown range up to 5.6km (3.5 Miles) with XTend set to 100mW with small 3.1dB dipole antenna.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
[[Image:XTend_USB_RF_Modem.jpg|frame|left|9XTend USB Modem]]&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 900Mhz and 2.4Ghz (2 versions)&lt;br /&gt;
* Output Power 1mW to 1W software selectable&lt;br /&gt;
* Sensitivity  -110 dBm (@ 9600 bps)&lt;br /&gt;
* RF Data Rate 9.6 or 115.2 Kbps&lt;br /&gt;
* Interface data rate up to 230.4 Kbps&lt;br /&gt;
* Power Draw (typical) 730 mA TX / 80 mA RX &lt;br /&gt;
* Supply Voltage 2.8 to 5.5v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 64km line-of-sight &lt;br /&gt;
* Dimensions 36 x 60 x 5mm&lt;br /&gt;
* Weight 18 grams&lt;br /&gt;
* Interface 20-pin mini connector or USB&lt;br /&gt;
* RF connector RPSMA (Reverse-polarity SMA) or MMCX (2 versions)&lt;br /&gt;
* price : 150€&lt;br /&gt;
|&lt;br /&gt;
[[Image:Xtend_module.jpg|frame|left|9XTend OEM Modem]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Pinout ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Maxstream_9XTend_Pinout.gif|thumb|left|Maxstream 9XTend Pinout]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''9XTend 20-pin Header'''''||'''''Name'''''||'''''Tiny Serial-1 Header'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
||1||GND||1 (GND)||Ground &lt;br /&gt;
|-&lt;br /&gt;
||2||VCC||2 (5V)||5V power (150mA - 730mA Supplied from servo bus or other 5V source)&lt;br /&gt;
|-&lt;br /&gt;
||5||RX||8 (TX)||3-5V TTL data input - connect to Tiny TX&lt;br /&gt;
|-&lt;br /&gt;
||6||TX||7 (RX)||5V TTL data output - connect to Tiny RX&lt;br /&gt;
|-&lt;br /&gt;
||7||Shutdown||2||This pin must be connected to the 5V bus for normal operation&lt;br /&gt;
|}&lt;br /&gt;
Notes:&amp;lt;br&amp;gt;&lt;br /&gt;
* 9XTend can run on voltages as low as 2.8V but users are strongly advised against connecting any modem (especially high power models) to the sensitive 3.3V bus supplying the autopilot processor and sensors.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.maxstream.net/products/xtend/oem-rf-module.php product page]&lt;br /&gt;
* [http://www.maxstream.net/products/xtend/datasheet_XTend_OEM_RF-Module.pdf datasheet]&lt;br /&gt;
* [http://www.maxstream.net/products/xtend/product-manual_XTend_OEM_RF-Module.pdf user manual]&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
These modems need to be carefully configured based on your usage scenario to obtain the best possible range and link quality. In addition, it is always good to make sure the firmware is up to date.&lt;br /&gt;
&lt;br /&gt;
Some typical configurations that may work well, but can still depend your particular situation, are given below. For further details, be sure to consult the XTend users manual. Your application may need a different or modified configuration. The radiomodems do not need identical settings and can in fact be optimized with different settings. A good example is delays and retries: if each radio has the same number of retries and no delay, when a collision occurs each will continuously try to re-transmit, locking up the transmission for some time with no resolution or successful packet delivery. Instead, it is best to set the module whose data should have a lower latency to have no delay and a lower number of retries, while the other module has a delay set (RN &amp;gt; 0) and a greater number of retries. See acknowledged mode example below.&lt;br /&gt;
&lt;br /&gt;
* Acknowledged Polling Mode ('''Recommended'''):&lt;br /&gt;
** This causes one radio to be the base and the other(s) to be the remote(s). It eliminates collisions because remotes do not send data unless requested by the base. It can work in acknowledged mode (RR&amp;gt;0), basic reliable mode (MT&amp;gt;0) or in basic mode (no acknowledgement or multiple packets). It is recommended that the lower latency and/or higher data rate side be configured as the base (i.e. if you are sending lots of telemetry then the air module configured as the base is probably a good idea, but if you are using datalink joystick control, the ground side might be better as the base. It may require some experimentation).&lt;br /&gt;
* Acknowledged Point-to-(Multi)Point Mode:&lt;br /&gt;
** Each radio sends a packet and requests and acknowledgement that the packet was sent from the receiving side. The retries and delays must be set appropriately to ensure packet collisions are dealt with appropriately. It can also work without acknowledgements in basic reliable mode (MT&amp;gt;0) without any acknowledgements (RR=0, MT=0). Some experimentation may be required.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''Setting Name'''''||colspan=&amp;quot;2&amp;quot;|'''''Acknowledged Mode'''''||colspan=&amp;quot;2&amp;quot;|'''''Polling Mode (Acknowledged)'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
|| ||'''''Airside Module'''''||'''''Groundside Module'''''||'''''Base Module'''''||'''''Remote Module'''''||&lt;br /&gt;
|-&lt;br /&gt;
||BD||6||6||6||6||Adjust to match your configured autopilot and ground station baud rates (default for these is 57600bps)&lt;br /&gt;
|-&lt;br /&gt;
||DT||default||default||0x02||0x01||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||MD||default||default||3 (0x03)||4 (0x04)||&lt;br /&gt;
|-&lt;br /&gt;
||MT||0||0||0||0||Use this to enable Basic Reliable transmission, link bandwidth requirement increases (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||MY||default||default||0x01||0x02||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PB||default||default||0x02||default||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PD||default||default||default||default||Can be adjusted to increase polling request rate and DI buffer flush timeout (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PE||default||default||0x02||default||Can be adjusted if consistency maintained across addressing functionalities (see manual)&lt;br /&gt;
|-&lt;br /&gt;
||PL||default||default||default||default||''Transmit power level should be reduced for lab testing!!''&lt;br /&gt;
|-&lt;br /&gt;
||RN||0 (0x00)||8 (0x08)||default||default||&lt;br /&gt;
|-&lt;br /&gt;
||RR||6 (0x06)||12 (0x0C)||6 (0x06)||12 (0x0C)||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All settings are assumed to be default except those listed. Those listed are in decimal unless hex 0x prefix included. Depending on your firmware version, slight modifications may be necessary.&lt;br /&gt;
&lt;br /&gt;
Here is some additional information and alternative instructions to configure the polling mode from the Digi site: [http://www.digi.com/support/kbase/kbaseresultdetl?id=2178 Polling Mode for the 9XTend Radio Modem]&lt;br /&gt;
&lt;br /&gt;
== SiLabs Si1000 SoC based modems ==&lt;br /&gt;
&lt;br /&gt;
The Si1000 radio System on Chip (SOC) produced by  SiLabs is found in a number of radio modules, for example the cheap and widely used HopeRf module. There is [https://github.com/tridge/SiK open source firmware] for these radios which makes them suitable for use in MAVs. &lt;br /&gt;
&lt;br /&gt;
Note that (unlike some XBee modules) the SiK firmware does not support mesh topologies, it is strictly a point-to-point link. If you are working with swarming vehicles they may not be the best choice.&lt;br /&gt;
&lt;br /&gt;
Online documentation for the Sik firmware shows how to configure it for various jurisdictions. The firmware supports 433 MHz, 470 MHz, 868 MHz and 900 MHz radios, if you are aware of any hardware supporting the European spectrum licences (868 MHz) please add them to this wiki.&lt;br /&gt;
&lt;br /&gt;
Note: When using a SiK firmware radio with paparazzi, you should set &amp;quot;ATS6=0&amp;quot; (MavLink packing off) and configure paparazzi for transparent serial mode.&lt;br /&gt;
&lt;br /&gt;
[http://www.rfdesign.com.au/index.php/rfd900 This module] is well proven and supports antenna diversity. A combination of 6dbi Yagi plus a dipole on the ground station, with a pair of  orthogonality oriented dioples in the airframe, has been extensively tested and proven reliable at &amp;gt;8km range (theoretical range of ~40km).&lt;br /&gt;
&lt;br /&gt;
Alternatively, for shorter range a pair of cheap generic HopeRF-based modems [http://rctimer.com/index.php?gOo=goods_details.dwt&amp;amp;goodsid=815 such as these]&lt;br /&gt;
&lt;br /&gt;
The RFD900 can be paired with cheap generic (single front-end) modules, if for example you use a small short range airframe with a ground station that's also used for long range operations.&lt;br /&gt;
&lt;br /&gt;
== Laird (ex Aerocom) ==&lt;br /&gt;
Lairds's API mode is already implemented but some system integration is required. Full API more with addressed packets works well and was tested with AC4790-1x1 5mW low power modules. Maximim range achieved with a whip quater-wave antenna was 1Km.&lt;br /&gt;
&lt;br /&gt;
How to use this modem on ground station side? [http://paparazzi.enac.fr/wiki/index.php/User:SilaS#SDK-AC4868-250_ground_modem_part]&lt;br /&gt;
&lt;br /&gt;
See folder paparazzi3 / trunk / sw / aerocomm. It has all the required files to use this modem on the airborne and ground station side. The link.ml file is a direct replacement of the &amp;quot;main&amp;quot; link.ml file of the ground sttaion and will be merged into it in the future.. or you can do it as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
=== AC4790-200 ===&lt;br /&gt;
* Frequency 902-928MHz (North America, Australia, etc).&lt;br /&gt;
* Output Power 5-200mW&lt;br /&gt;
* Sensitivity (@ full RF data rate) -110dB&lt;br /&gt;
* RF Data Rate up to 76.8 Kbps&lt;br /&gt;
* INterface Data Rate Up to Up to 115.2 Kbps &lt;br /&gt;
* Power Draw (typical) 68 mA&lt;br /&gt;
* Supply Voltage 3.3v &amp;amp; 5.5V&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 6.4 kilometers line-of-sight &lt;br /&gt;
* Dimensions 42 x 48 x 5mm &lt;br /&gt;
* Weight &amp;lt; 20 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Antenna MMCX jack Connector or internal&lt;br /&gt;
* price : 52€&lt;br /&gt;
|&lt;br /&gt;
[[Image:ac4868_transceiver.jpg|thumb|left|AC4868 OEM Modem]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
=== AC4790-1000 ===&lt;br /&gt;
* Frequency 902-928MHz (North America, Australia, etc).&lt;br /&gt;
* Output Power 5-1000mW&lt;br /&gt;
* Sensitivity (@ full RF data rate) -99dB&lt;br /&gt;
* RF Data Rate up to 76.8 Kbps&lt;br /&gt;
* INterface Data Rate Up to Up to 115.2 Kbps &lt;br /&gt;
* Power Draw (typical) 650 mA&lt;br /&gt;
* Supply Voltage 3.3V only&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 32 kilometers with high-gain antenna&lt;br /&gt;
* Dimensions 42 x 48 x 5mm &lt;br /&gt;
* Weight &amp;lt; 20 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Antenna MMCX jack Connector&lt;br /&gt;
* price : 64€&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pinout ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Aerocomm_AC4868_pinout.jpg|thumb|left|Laird AC4868 modem pinout]]&lt;br /&gt;
[[Image:Aerocomm_AC4490-200_wired.jpg|thumb|left|Laird AC4490 wiring example]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Wiring the Laird AC4868 to the Tiny&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''AC4868 20-pin Header'''''||'''''Name'''''||'''''Color'''''||'''''Tiny v1.1 Serial-1'''''||'''''Tiny v2.11 Serial'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
||2||Tx||green||7||7||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||3||Rx||blue||8||8||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||5||GND||black||1||1|| -&lt;br /&gt;
|-&lt;br /&gt;
||10+11||VCC||red||2||3||+3.3v ''(Note 2)''&lt;br /&gt;
|-&lt;br /&gt;
||17||C/D||white||3||?||Low = Command High = Data&lt;br /&gt;
|}&lt;br /&gt;
''Note 1 : names are specified with respect to the AEROCOMM module''&lt;br /&gt;
&lt;br /&gt;
''Note 2 : AC4790-1000 needs pins 10 and 11 jumped to work properly''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Laird LT2510 ===&lt;br /&gt;
[[Image:Laird_LT2510_RM024-P125-C-01.jpg‎|thumb|LT2510 P125]]&lt;br /&gt;
[[Image:Laird_LT2510_RM024-P125-C-01-side.jpg|thumb|LT2510 P125]]&lt;br /&gt;
[[Image:Lt2510_prm123.jpg|thumb|LT2510 Modem]]&lt;br /&gt;
&lt;br /&gt;
Two different power versions are available:&amp;lt;br/&amp;gt;&lt;br /&gt;
* 50mW version: 4 dbm to 17 dbm (2,5 mW to 50mW)&amp;lt;br/&amp;gt;&lt;br /&gt;
* 125mW version: 4 dbm to 21 dbm (2,5 mW to 125mW)&lt;br /&gt;
&lt;br /&gt;
Two different mounting/pinuts are available:&amp;lt;br/&amp;gt;&lt;br /&gt;
* smd version: can be soldered on a pcb&amp;lt;br/&amp;gt;&lt;br /&gt;
* pin header: standard xbee (or BEE) pinout with header (this is the SMD version mounted on a seperate pcb with male pin headers)&lt;br /&gt;
&lt;br /&gt;
General features:&lt;br /&gt;
* Frequency Band 2.4GHz&lt;br /&gt;
* Output Power 2,5mW - 125mW&lt;br /&gt;
* Sensitivity  -98dbm @ 280kbps/-94 dBm @ 500kbps&lt;br /&gt;
* RF Data Rate 280/500 kbps&lt;br /&gt;
* UART up to 460800 baud&lt;br /&gt;
* Power Draw 90mA - 180mA TX / 10mA RX&lt;br /&gt;
* Supply Voltage 3.3v&lt;br /&gt;
* Range up to 4000m&lt;br /&gt;
* Dimensions 26 x 33 x 4mm&lt;br /&gt;
* Weight 4 grams&lt;br /&gt;
* Interface 20-pin mini connector (smd solder pad or XBee compatible pin header)&lt;br /&gt;
* Chip antenna, or a U.FL antenna connector&lt;br /&gt;
* Price: 29-31€ @ mouser (smd or tht version)&lt;br /&gt;
&lt;br /&gt;
There are following differences between both versions:&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||''value''||''50mW version''||''125mW version''||&lt;br /&gt;
|-&lt;br /&gt;
|output power&lt;br /&gt;
| 2,5mW - 50mW&lt;br /&gt;
| 2,5mW - 125mW&lt;br /&gt;
|-&lt;br /&gt;
|maximum radiated power&lt;br /&gt;
|20dbm&lt;br /&gt;
|30dbm&lt;br /&gt;
|-&lt;br /&gt;
|TX drain&lt;br /&gt;
|90mA&lt;br /&gt;
|&amp;lt;180mA&lt;br /&gt;
|-&lt;br /&gt;
|max range&lt;br /&gt;
|2400m&lt;br /&gt;
|4000m&lt;br /&gt;
|-&lt;br /&gt;
|approval&lt;br /&gt;
|CE for EU, FCC/IC for USA,&lt;br /&gt;
Canada PRM122/123 also for Japan&lt;br /&gt;
|FCC/IC for USA, Canada &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The LT2510 uses frequency hopping which needs a client/server model. That means that one modem (most appropriately the ground station modem) needs to be set to server mode. It will transmit a beacon message and have all client modems synchronize to that in a time and frequency hopping scheme manner. For that all modems need to have the same channel (in fact the hopping scheme) and system-id. Clients can be set to auto-channel and auto-system-id to follow any/the first visible server.&lt;br /&gt;
&lt;br /&gt;
All acknowledged messages transmitted need to be adressed to the non-changeable MAC address of the destination modem. There are is a way to automatically set destination adresses but this procedure does have drawbacks (see below).&lt;br /&gt;
&lt;br /&gt;
Make sure you short circuit &amp;quot;D1&amp;quot; if you use the Sparkfun WRL-09132 &amp;quot;XBee Explorer Regulated&amp;quot; adapter. The Laird does not have a pull-up resistor on DIN that Sparkfun assumes.&lt;br /&gt;
====Documentation====&lt;br /&gt;
[http://www.lairdtech.com/WorkArea/linkit.aspx?LinkIdentifier=id&amp;amp;ItemID=4379 User Manual (PDF)]&lt;br /&gt;
==== Basic setup ====&lt;br /&gt;
&lt;br /&gt;
You can download a Windows configuration utility from [http://www.lairdtech.com/zips/Developer_Kit.zip here].&lt;br /&gt;
&lt;br /&gt;
 Set client to client mode (default).&lt;br /&gt;
 Set server to server mode.&lt;br /&gt;
&lt;br /&gt;
 Set speed on both modems to 57600 baud, the Paparazzi standard.&lt;br /&gt;
&lt;br /&gt;
 Choose RF profile with low speed (280kbps) for long range (default).&lt;br /&gt;
&lt;br /&gt;
===== Transparent mode =====&lt;br /&gt;
&lt;br /&gt;
The transparent mode is different from the XBee modems transparent mode. It will only allow two modems to communicate with each other.&lt;br /&gt;
&lt;br /&gt;
====== Transparent mode with hard coded address ======&lt;br /&gt;
&lt;br /&gt;
In this mode the destination MAC address is permanently set in the EEPROMs of the modems. Only these two modems can communicate with each other. The advantage of this mode is that other modems can not confuse the communication. You have to read out both modems MAC adresses as they are not printed on the case.&lt;br /&gt;
&lt;br /&gt;
 Set server MAC address in client&lt;br /&gt;
 Set client MAC address in server&lt;br /&gt;
&lt;br /&gt;
====== Transparent mode with auto-address ======&lt;br /&gt;
&lt;br /&gt;
The server will start emitting beacon messages and the client locks to these, starting to send messages to the servers MAC address. The server will then respond to that clients data messages. In this mode only one server can talk to one client. Any appearance of another server or client modem will confuse/disrupt the communication.&lt;br /&gt;
&lt;br /&gt;
 Set server to auto-destination.&lt;br /&gt;
 Set client to auto-destination and auto-destination-beacons-only.&lt;br /&gt;
&lt;br /&gt;
===== API mode =====&lt;br /&gt;
&lt;br /&gt;
We need at least a simple form of address resolution as the modems own (MAC) address can not be changed. This makes the ground station link and on-board software a little more complicated than the XBee API mode.&lt;br /&gt;
&lt;br /&gt;
 tbd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
These modems do not give you a great range but Bluetooth can be found in a lot of recent laptops built-in. Maybe not useful for fixed wing aircrafts it might be used for in-the-shop testing or quadcopters. Make sure you get a recent Class 1 EDR 2.0 stick if you buy one for your computer.&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
=== RN-41 Bluetooth module(Sparkfun's WRL-08497) ===&lt;br /&gt;
* Frequency Band 2.4GHz&lt;br /&gt;
* Output Power 32 mW &lt;br /&gt;
* RF Data Rate up to ~300 kbps in SPP&lt;br /&gt;
* Interface Data Rate up to 921 kbps &lt;br /&gt;
* Power Draw (typical) 50 mA TX / 40 mA RX &lt;br /&gt;
* Supply Voltage 3.3v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) 100 meters line-of-sight &lt;br /&gt;
* Dimensions 26 x 13 x 2mm &lt;br /&gt;
* Weight ~1.5 grams&lt;br /&gt;
* Interface solder connector  &lt;br /&gt;
* price : 20€&lt;br /&gt;
|&lt;br /&gt;
[[Image:roving_nw_wiring.jpg|thumb|Roving Networks modem wiring]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
To connect to it, get the MAC address of the bluetooth modem&lt;br /&gt;
&lt;br /&gt;
 me@mybox:~$ hcitool scan&lt;br /&gt;
 Scanning ...&lt;br /&gt;
        00:06:66:00:53:AD       FireFly-53AD&lt;br /&gt;
&lt;br /&gt;
either make a virtual connection to a Bluetooth serial port each time you connect&lt;br /&gt;
&lt;br /&gt;
 sudo rfcomm bind 0 00:06:66:00:53:AD&lt;br /&gt;
&lt;br /&gt;
or configure it once in /etc/bluetooth/rfcomm.conf&lt;br /&gt;
&lt;br /&gt;
 rfcomm0 {&lt;br /&gt;
   bind yes;&lt;br /&gt;
   device 00:06:66:00:53:AD;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
now you can use Bluetooth as '''/dev/rfcomm0''' with the Paparazzi 'link'. You might need to restart 'link' in case you get out of range and it disconnects (tbd). Set the Tiny serial speed to 115200 as the modules come preconfigured to that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Telemetry via Video Transmitter==&lt;br /&gt;
&lt;br /&gt;
[[Image:video_tx_small.jpg|thumb|2.4GHz Video Transmitter]]&lt;br /&gt;
In order for the UAV to transmit video from an onboard camera, an analog video transmitter can be used.  These vary in power, and thus range, and run normally on 2.4Ghz.  Small UAVs can get about 600m of range from the 50mW version, and extended range can be achieved using units up to 1W.  Weight for these units varies from a couple grams to about 30 for the 1W with shielding.  Please check for your countries regulations on 2.4Ghz transmission, as each is different. &lt;br /&gt;
&lt;br /&gt;
It is possible to use the audio channel to send simple telemetry data to the groundstation. Uploading telemetry not possible via analog audio transmitter only.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Telemetry via Internet / Raspberry Pi==&lt;br /&gt;
Not ready yet...&lt;br /&gt;
&lt;br /&gt;
The main link works over the internet and mobile internet.&lt;br /&gt;
&lt;br /&gt;
Most UMTS sticks don't have a own public IP adress and can't be used as a server. The ssh connection must be reversed(ssh server runs on the gcs, not on the uav)&lt;br /&gt;
&lt;br /&gt;
How to:&lt;br /&gt;
*Establish the connection between a UMTS stick and the Raspberry PI, search for each programm for seperate instructions, these on instructables aren't complete ! [http://www.instructables.com/id/Raspberry-Pi-as-a-3g-Huawei-E303-wireless-Edima/#step1 Instructables site]&lt;br /&gt;
&lt;br /&gt;
A android smartphone is another way to provide the Raspberry pi with a internet connection. [http://www.therasberrypi.com/how-to-usb-tether-android-to-your-raspberry-pi Android USB thetering setup]&lt;br /&gt;
&lt;br /&gt;
*set up ser2net&lt;br /&gt;
*set up static ip adress (public) of your gcs [http://www.cyberciti.biz/tips/howto-ubuntu-linux-convert-dhcp-network-configuration-to-static-ip-configuration.html static IP Ubuntu]&lt;br /&gt;
*set up reverse ssh tunnel [http://www.tunnelsup.com/tup/2013/05/08/raspberry-pi-phoning-home-using-a-reverse-remote-ssh-tunnel ssh reverse serial tunnel]&lt;br /&gt;
&lt;br /&gt;
*connect Raspberry PI with AP over UART (Raspberry Pi's UART Pins are only 3.3v and not 5v tollerant)&lt;br /&gt;
== Old / not supported ==&lt;br /&gt;
Modules in these cathegory have issues with paparazzi are discontinued by the manufacturer.&lt;br /&gt;
Maybe hey will be deleted soon.&lt;br /&gt;
&lt;br /&gt;
=== Laird / Aerocom AC4868-250 ===&lt;br /&gt;
'''This module was discontinued by the manufacturer'''&lt;br /&gt;
[[Image:ConnexLink_USB_RF_Modem.jpg|thumb|Aerocomm USB Stand-alone Modem]]&lt;br /&gt;
* Frequency Band 868MHz (For Europe). 868MHz is a limited band. Please read the [[868MHz Issues]]&lt;br /&gt;
* Output Power (w/ 2dBi antenna) 250 mW &lt;br /&gt;
* Sensitivity (@ full RF data rate) -103 dB &lt;br /&gt;
* RF Data Rate Up to 28.8 Kbps &lt;br /&gt;
* INterface Data Rate Up to 57.6 Kbps &lt;br /&gt;
* Power Draw (typical) 240 mA TX / 36 mA RX &lt;br /&gt;
* Supply Voltage 3.3v &amp;amp; 5V or 3.3v only&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 15 kilometers line-of-sight &lt;br /&gt;
* Dimensions 49 x 42 x 5mm &lt;br /&gt;
* Weight &amp;lt; 21 grams&lt;br /&gt;
* Interface 20-pin mini connector  &lt;br /&gt;
* Antenna MMCX jack Connector &lt;br /&gt;
* price : 64€&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Radiotronix ===&lt;br /&gt;
These Radiotronix modems are used in transparent mode. Use the WI232EUR Evaluation Software for configuring the modems for the set speed. Connect /CMD and CTS for programming. The DTS version for the US market might cause severe interference with GPS reception, it is not recommended. For a nice ground station modem just add a FTDI232 USB-&amp;gt;serial cable, a 3.3V regulator with 100nF capacitors from supplies to ground, solder a SMA cable/connector and put it in a nice case. Make sure you only connect RTS to /CMD if you want to reprogram the modem with the Evaluation software (see the open jumper connection in the picture, green wire) and leave it floating otherwise as connected RTS/CTS sporadically leads to a reprogramming of the modem. The ANT-GXD105-FME/F from [http://www.roundsolutions.com Roundsolutions] was used as a ground station antenna at many competitions. Note that a 1/2 wave dipole antenna works best on-board as it doesn't require a ground-plane and has a reasonably omnidirectional radiation pattern.&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
==== WI232EUR ====&lt;br /&gt;
'''This Module has been discontinued by the manufacturer'''&lt;br /&gt;
* Frequency Band: 868 MHz (for Europe)&lt;br /&gt;
* Output Power: 32 mW &lt;br /&gt;
* RF Data Rate: Up to 76.8 kbps &lt;br /&gt;
* Interface Data Rate: up to 115.2 kbps &lt;br /&gt;
* Power Draw (typical): 65 mA TX / 20 mA RX &lt;br /&gt;
* Supply Voltage: 3.3v&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment): 500 meters line-of-sight &lt;br /&gt;
* Dimensions: 24 x 21 x 4mm &lt;br /&gt;
* Weight: ~2 grams&lt;br /&gt;
* Interface: solder connector  &lt;br /&gt;
* Antenna: solder connector &lt;br /&gt;
* Price: ~25$&lt;br /&gt;
[[Image:Wi232eur_wiring.jpg|thumb|WI232EUR Modem (picture shows connection to Tiny 1.1)]]&lt;br /&gt;
&lt;br /&gt;
==== Pinout ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Wiring the WI232EUR to the Tiny v1.1&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''''WI232 pins'''''||'''''Name'''''||'''''Tiny Serial-1'''''||'''''Notes'''''&lt;br /&gt;
|-&lt;br /&gt;
||6||TxD||7||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||5||RxD||8||''(Note 1)''&lt;br /&gt;
|-&lt;br /&gt;
||15-18||GND||1|| - &lt;br /&gt;
|-&lt;br /&gt;
||19||VCC||2||+3.3v&lt;br /&gt;
|-&lt;br /&gt;
||4||/CMD||-||''(Note 2)''&lt;br /&gt;
|-&lt;br /&gt;
||7||CTS||-||''(Note 3)''&lt;br /&gt;
|}&lt;br /&gt;
''Note 1 : names are specified with respect to the Radiotronix module''&lt;br /&gt;
&lt;br /&gt;
''Note 2 : connect to RTS to program device with Evaluation software''&lt;br /&gt;
&lt;br /&gt;
''Note 3 : connect to CTS to program device with Evaluation software''&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
[[Image:Wi232eur_bopla.jpg|thumb|WI232EUR Modem in BOPLA case]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [http://www.radiotronix.com/datasheets/new/eur_um.pdf WI232EUR data sheet]&lt;br /&gt;
* [http://www.radiotronix.com/datasheets/new/rk-eur_um.pdf WI232EUR user's manual]&lt;br /&gt;
* [http://www.radiotronix.com/downloads/software/EUR/setup.exe Evaluation software]&lt;br /&gt;
&lt;br /&gt;
=== Digi XBee Pro 900 ===&lt;br /&gt;
'''These modules have been discontinued by the manufacturer, new version is XBee Pro 900HP'''&lt;br /&gt;
&lt;br /&gt;
XBee Pro 900 modules are long range embedded RF modules for US applications. Purpose-built for exceptional RF performance, XBee-Pro 900 modules are ideal for applications with challenging RF environments, such as urban deployments, or where devices are several kilometers apart.&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
* [ftp://ftp1.digi.com/support/documentation/90000903_a.pdf ftp://ftp1.digi.com/support/documentation/90000903_a.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Coronis WaveCard ===&lt;br /&gt;
&lt;br /&gt;
These relatively inexpensive and light modules implement a Coronis proprietary protocol. Low power consumption - high latency - I would not recommend these modules mostly because of the low quality of the distribution and support. The documentation is rather poor and not easily available.&lt;br /&gt;
&lt;br /&gt;
'''Suport for these modems has been removed from the airborne code on Dec 10th, 2007.'''&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* Frequency Band 400MHz, 868Mhz and 915MHz (3 versions)&lt;br /&gt;
* Output Power 25mW and 500mW (2 versions)&lt;br /&gt;
* Sensitivity  -110 dBm (@ 9600 bps)&lt;br /&gt;
* Data Rate 100 Kbps&lt;br /&gt;
* Power Draw (typical) 45mA (25mW), 450mA (500mW) TX / 15 mA RX &lt;br /&gt;
* Supply Voltage ...&lt;br /&gt;
* Range (typical, depends on antenna &amp;amp; environment) Up to 1km (25mW) , 5km (500mW) line-of-sight &lt;br /&gt;
* Dimensions 30 x 28 x 7mm (25mW), 37 x 30 x 7mm (500mW)&lt;br /&gt;
* 50 ohm RF port for antenna connection&lt;br /&gt;
|&lt;br /&gt;
[[Image:wavecard.jpg|Coronis Wavecard]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Documentation ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.coronis-systems.com/produit.php?lang=EN&amp;amp;id=WCA  www.coronis-systems.com]&lt;br /&gt;
* [[Media:CS-COM-SPRD-WAVECARD-E03B.pdf|Wavecard datasheet]]&lt;br /&gt;
== Antennas ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples of lightweight and efficient 868MHz antennas developped by the RF laboratory at ENAC.&lt;br /&gt;
[[Image:868mhz_twinstar_antenna_1.jpg|thumb|left|868MHz copper foil antenna attached to the aircraft tail]] &lt;br /&gt;
[[Image:868mhz_twinstar_antenna_2.jpg|thumb|left|868MHz copper foil antenna bottom view]] &lt;br /&gt;
[[Image:868mhz_ground_antenna.jpg|thumb|left|868MHz ground antenna]] &lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This wiki page might give some ideas about antennas: http://en.wikipedia.org/wiki/Dipole_antenna&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16088</id>
		<title>DSM</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16088"/>
		<updated>2013-10-04T19:29:09Z</updated>

		<summary type="html">&lt;p&gt;Jkg: formatting, links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is DSM (DSM2/DSMX) ==&lt;br /&gt;
DSM2 and DSMX are widely used radio protocols for 2.4GHz spektrum RC transmitters and receivers. It is also used in the [[SuperbitRF]] project as datalink. The protocol makes it possible to have multiple receiver/transmitters in the 2.4GHz spektrum without much interference.&lt;br /&gt;
&lt;br /&gt;
=== The difference between DSM2 and DSMX ===&lt;br /&gt;
There is only a small difference between DSM2 and DSMX, which is the way they hop between different channels. In the DSM2 protocol the transmitter will choose two random channels, where the transmitter will look for the two best channels in the optimal case. In the DSMX protocol the transmitter and receiver both use the transmitter radio chip ID,which is send during the binding process, for generating 23 channels. Each time the transmitter transmits a packet or the receiver receives a packet they will hop to the next channel.&lt;br /&gt;
&lt;br /&gt;
From this information you can conclude that when you use DSM2, and both the channels that were chosen are getting used by a lot of other users your reception will drop enormously. In the DSMX protocol this problem was solved and makes it possible to have a lot more transmitters/receivers at the same bandwidth.&lt;br /&gt;
&lt;br /&gt;
== How does it work ==&lt;br /&gt;
''Note that this is reverse engineered and will contain errors.''&lt;br /&gt;
&lt;br /&gt;
In general you have three phases, the binding procedure, the syncing procedure and the normal transfer procedure. The transmitter doesn't have a syncing procedure, because it determines the timing for the receiver.&lt;br /&gt;
&lt;br /&gt;
=== The binding procedure ===&lt;br /&gt;
At the binding procedure both the transmitter and receiver will change to [[DSM#Definitions|SDR (Single Data Rate) mode]], a data code of 64 bits, a [[DSM#Definitions|SOP (Start Of Packet) Code]] of 64 bits and disable the [[DSM#Definitions|CRC Checksum]]. The transmitter will then choose a random odd channel and starts sending the [[DSM#Binding packet|binding packet]] at a very high rate. The receiver will start at the first odd channel and waits a bit longer then the rate the transmitters sends at. When it does receive a packet, it will check if it is a valid bind packet and goes to syncing mode. When it doesn't receive a valid packet it will go to the next channel and will repeat this.&lt;br /&gt;
&lt;br /&gt;
During the binding procedure the transmitter also sends the amount of RC channels that it has and in which amount of packets this channels will fit. They will either transmit all the channels in one packet or in two packets after each other.&lt;br /&gt;
&lt;br /&gt;
=== The syncing procedure ===&lt;br /&gt;
Because the transmitter doesn't have a syncing procedure, the transmitter is already in the transfer procedure. The receiver on the other hand needs to synchronise itself with the transmitter. &lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== The transfer procedure ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Some general information about the DSM2/DSMX protocol.&lt;br /&gt;
&lt;br /&gt;
=== Definitions ===&lt;br /&gt;
* '''Channel''': The channel in the 2.4GHz band(2.400GHz to 2.483GHz) which is used to transmit or receive. Each channel is 100mHz higher then the previous one starting by 0, and the 2.4GHz band is divided into 98 channels.&lt;br /&gt;
* '''(Transmission) Mode''': The mode at which the transmitter, or receiver is sending/receiving. There are  four different modes the transmitter/receiver could be in: GFSK(Gaussian Frequency Shift Keying), 8DR(Octal Data Rate), DDR(Double Data Rate), SDR(Single Data Rate). The ones used are 8DR and SDR, in SDR mode one bit is encoded in each derived code symbol transmitted. In 8DR mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''GFSK''': Gaussian Frequency Shift Keying Transfer mode. CYRF6936 in this mode data is transmitted at 1 Mbps, without any DSSS.&lt;br /&gt;
* '''8DR''': Octal Data Rate. CYRF6936 in this mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''DDR''': Double Data Rate. CYRF6936 in this mode two bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SDR''': Single Data Rate. CYRF6936 in this mode one bit is encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SOP code''': Start Of Packet code, are one or two bytes which are added at the start of the packet by the radio chip. These bytes are used to identify if a packet is received at a certain channel.&lt;br /&gt;
* '''Packet length''': The packet length(one byte) is send after the SOP code, and only includes the length of the payload data. Because it is one byte the limit of the payload length is 255, but because 8DR and SDR only transmit 16byte packets they will be automatically split up into multiple packets.&lt;br /&gt;
* '''CRC (Checksum)''': The CRC Checksum are two bytes which are send at the end of the packet to check if the received packet was valid. It can detect the following errors: any one bit error, any two bits error, any odd number of bits in error and an error burst as wide as the checksum itself.&lt;br /&gt;
* '''CYRF6936''': A radio chip used in several transmitters and the SuperbitRF project.&lt;br /&gt;
&lt;br /&gt;
=== Packet example ===&lt;br /&gt;
Here is an image of an example packet including the Preamble, SOP, Length, Payload Data and the CRC.&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_packet_example.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Binding packet ===&lt;br /&gt;
The binding packet has a length of 16 bytes, the exact size the SDR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [01] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [02] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [03] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [04] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [05] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [06] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [07] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [08] (sum 00-&amp;gt;07 + 384 - 16) MSB&lt;br /&gt;
 [09] (sum 00-&amp;gt;07 + 384 - 16) LSB&lt;br /&gt;
 [10] 0x01 (not known yet)&lt;br /&gt;
 [11] number of RC channels&lt;br /&gt;
 [12] protocol used (0x01:DSM2 1packet, 0x02: DSM2 2packets, 0x10: DSM2 SuperbitRF, 0x11: DSMX SuperbitRF, 0xA2: DSMX 1packet, 0xB2: DSMX 2packets)&lt;br /&gt;
 [13] 0x00 (not known yet)&lt;br /&gt;
 [14] (sum 00-&amp;gt;13 + 384 - 16) MSB&lt;br /&gt;
 [15] (sum 00-&amp;gt;13 + 384 - 16) LSB&lt;br /&gt;
&lt;br /&gt;
=== Transfer packet ===&lt;br /&gt;
The transfer packet has a length of 16 bytes, the exact size 8DR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 2&lt;br /&gt;
 [01] radio chip ID byte 3 (+packet loss bit in SuperbitRF)&lt;br /&gt;
 [02-15] data&lt;br /&gt;
&lt;br /&gt;
==Raw DSM data capture files==&lt;br /&gt;
&lt;br /&gt;
To aid the understanding of the various DSM protocols, data was captured using the following hardware:&lt;br /&gt;
&lt;br /&gt;
*Main receiver: Spektrum AR9020&lt;br /&gt;
*Satellite receivers: 2x Spektrum 9645 connected to Ant B and Ant R ports&lt;br /&gt;
*[http://www.saleae.com/logic Saleae Logic] set to capture signal wires of satellite receivers:&lt;br /&gt;
**Channel 0 = Ant B&lt;br /&gt;
**Channel 1 = Ant R&lt;br /&gt;
**GROUND = ground of Ant R&lt;br /&gt;
&lt;br /&gt;
The capture data has been split into separate runs to abide by the file size limits of this wiki :-)&lt;br /&gt;
&lt;br /&gt;
The Mac/Win/Linux software to read/parse/export the data is downloadable from the Saleae [http://www.saleae.com/downloads website].&lt;br /&gt;
&lt;br /&gt;
===DSM data 1===&lt;br /&gt;
[[File:DSM_data_1_-_DX7s.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX7s&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 2===&lt;br /&gt;
[[File:DSM_data_2_part_1_-_DX18.zip‎]] (DSM2 runs)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_2_part_2_-_DX18.zip‎]] (DSMX runs)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
**aux3 (7)&lt;br /&gt;
**aux4 (8)&lt;br /&gt;
**aux5 (9)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 3===&lt;br /&gt;
[[File:DSM_data_3_-_DX18_Xplus_channels.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 500 KHz:&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 4===&lt;br /&gt;
[[File:DSM_data_4_part_1_-_DX18_Xplus_channels_12_MHz_capture.zip‎]] (DSM2 run)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_4_part_2_-_DX18_Xplus_channels_12_MHz_capture.zip‎]] (DSMX run)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 12 MHz:&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 5===&lt;br /&gt;
[[File:DSM_data_5_part_1_-_DX18_RSSI.zip‎]] (DSM2 runs)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_5_part_2_-_DX18_RSSI.zip]] (DSMX runs)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18 in range test mode&lt;br /&gt;
&lt;br /&gt;
Data capture runs @ 1 MHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
RSSI test:&lt;br /&gt;
&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*TX switched on and set to range test mode&lt;br /&gt;
*Power on RXes/start capture&lt;br /&gt;
*Press range test button (reduce TX power)&lt;br /&gt;
*Move TX away from RX while moving elevator (2) channel repeatedly until servo no longer moves/satellite LEDs are out&lt;br /&gt;
*release range test button (normal TX power)&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
== External References ==&lt;br /&gt;
* [http://www.cypress.com/?docID=28606 CYRF6936 Data Sheet]&lt;br /&gt;
* [http://www.deviationtx.com/ Deviation Firmware]&lt;br /&gt;
* [https://sites.google.com/site/mrdunk/interfacing-cypress-cyrf6936-to-avr-microcontrollers Interfacing with the CYRF6936]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1759502 RCGorups: DSMX Hacking]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16085</id>
		<title>DSM</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16085"/>
		<updated>2013-10-03T22:01:39Z</updated>

		<summary type="html">&lt;p&gt;Jkg: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is DSM (DSM2/DSMX) ==&lt;br /&gt;
DSM2 and DSMX are widely used radio protocols for 2.4GHz spektrum RC transmitters and receivers. It is also used in the [[SuperbitRF]] project as datalink. The protocol makes it possible to have multiple receiver/transmitters in the 2.4GHz spektrum without much interference.&lt;br /&gt;
&lt;br /&gt;
=== The difference between DSM2 and DSMX ===&lt;br /&gt;
There is only a small difference between DSM2 and DSMX, which is the way they hop between different channels. In the DSM2 protocol the transmitter will choose two random channels, where the transmitter will look for the two best channels in the optimal case. In the DSMX protocol the transmitter and receiver both use the transmitter radio chip ID,which is send during the binding process, for generating 23 channels. Each time the transmitter transmits a packet or the receiver receives a packet they will hop to the next channel.&lt;br /&gt;
&lt;br /&gt;
From this information you can conclude that when you use DSM2, and both the channels that were chosen are getting used by a lot of other users your reception will drop enormously. In the DSMX protocol this problem was solved and makes it possible to have a lot more transmitters/receivers at the same bandwidth.&lt;br /&gt;
&lt;br /&gt;
== How does it work ==&lt;br /&gt;
''Note that this is reverse engineered and will contain errors.''&lt;br /&gt;
&lt;br /&gt;
In general you have three phases, the binding procedure, the syncing procedure and the normal transfer procedure. The transmitter doesn't have a syncing procedure, because it determines the timing for the receiver.&lt;br /&gt;
&lt;br /&gt;
=== The binding procedure ===&lt;br /&gt;
At the binding procedure both the transmitter and receiver will change to [[DSM#Definitions|SDR (Single Data Rate) mode]], a data code of 64 bits, a [[DSM#Definitions|SOP (Start Of Packet) Code]] of 64 bits and disable the [[DSM#Definitions|CRC Checksum]]. The transmitter will then choose a random odd channel and starts sending the [[DSM#Binding packet|binding packet]] at a very high rate. The receiver will start at the first odd channel and waits a bit longer then the rate the transmitters sends at. When it does receive a packet, it will check if it is a valid bind packet and goes to syncing mode. When it doesn't receive a valid packet it will go to the next channel and will repeat this.&lt;br /&gt;
&lt;br /&gt;
During the binding procedure the transmitter also sends the amount of RC channels that it has and in which amount of packets this channels will fit. They will either transmit all the channels in one packet or in two packets after each other.&lt;br /&gt;
&lt;br /&gt;
=== The syncing procedure ===&lt;br /&gt;
Because the transmitter doesn't have a syncing procedure, the transmitter is already in the transfer procedure. The receiver on the other hand needs to synchronise itself with the transmitter. &lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== The transfer procedure ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Some general information about the DSM2/DSMX protocol.&lt;br /&gt;
&lt;br /&gt;
=== Definitions ===&lt;br /&gt;
* '''Channel''': The channel in the 2.4GHz band(2.400GHz to 2.483GHz) which is used to transmit or receive. Each channel is 100mHz higher then the previous one starting by 0, and the 2.4GHz band is divided into 98 channels.&lt;br /&gt;
* '''(Transmission) Mode''': The mode at which the transmitter, or receiver is sending/receiving. There are  four different modes the transmitter/receiver could be in: GFSK(Gaussian Frequency Shift Keying), 8DR(Octal Data Rate), DDR(Double Data Rate), SDR(Single Data Rate). The ones used are 8DR and SDR, in SDR mode one bit is encoded in each derived code symbol transmitted. In 8DR mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''GFSK''': Gaussian Frequency Shift Keying Transfer mode. CYRF6936 in this mode data is transmitted at 1 Mbps, without any DSSS.&lt;br /&gt;
* '''8DR''': Octal Data Rate. CYRF6936 in this mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''DDR''': Double Data Rate. CYRF6936 in this mode two bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SDR''': Single Data Rate. CYRF6936 in this mode one bit is encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SOP code''': Start Of Packet code, are one or two bytes which are added at the start of the packet by the radio chip. These bytes are used to identify if a packet is received at a certain channel.&lt;br /&gt;
* '''Packet length''': The packet length(one byte) is send after the SOP code, and only includes the length of the payload data. Because it is one byte the limit of the payload length is 255, but because 8DR and SDR only transmit 16byte packets they will be automatically split up into multiple packets.&lt;br /&gt;
* '''CRC (Checksum)''': The CRC Checksum are two bytes which are send at the end of the packet to check if the received packet was valid. It can detect the following errors: any one bit error, any two bits error, any odd number of bits in error and an error burst as wide as the checksum itself.&lt;br /&gt;
* '''CYRF6936''': A radio chip used in several transmitters and the SuperbitRF project.&lt;br /&gt;
&lt;br /&gt;
=== Packet example ===&lt;br /&gt;
Here is an image of an example packet including the Preamble, SOP, Length, Payload Data and the CRC.&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_packet_example.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Binding packet ===&lt;br /&gt;
The binding packet has a length of 16 bytes, the exact size the SDR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [01] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [02] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [03] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [04] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [05] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [06] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [07] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [08] (sum 00-&amp;gt;07 + 384 - 16) MSB&lt;br /&gt;
 [09] (sum 00-&amp;gt;07 + 384 - 16) LSB&lt;br /&gt;
 [10] 0x01 (not known yet)&lt;br /&gt;
 [11] number of RC channels&lt;br /&gt;
 [12] protocol used (0x01:DSM2 1packet, 0x02: DSM2 2packets, 0x10: DSM2 SuperbitRF, 0x11: DSMX SuperbitRF, 0xA2: DSMX 1packet, 0xB2: DSMX 2packets)&lt;br /&gt;
 [13] 0x00 (not known yet)&lt;br /&gt;
 [14] (sum 00-&amp;gt;13 + 384 - 16) MSB&lt;br /&gt;
 [15] (sum 00-&amp;gt;13 + 384 - 16) LSB&lt;br /&gt;
&lt;br /&gt;
=== Transfer packet ===&lt;br /&gt;
The transfer packet has a length of 16 bytes, the exact size 8DR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 2&lt;br /&gt;
 [01] radio chip ID byte 3 (+packet loss bit in SuperbitRF)&lt;br /&gt;
 [02-15] data&lt;br /&gt;
&lt;br /&gt;
==Raw DSM data capture files==&lt;br /&gt;
&lt;br /&gt;
To aid the understanding of the various DSM protocols, data was captured using the following hardware:&lt;br /&gt;
&lt;br /&gt;
*Main receiver: Spektrum AR9020&lt;br /&gt;
*Satellite receivers: 2x Spektrum 9645 connected to Ant B and Ant R ports&lt;br /&gt;
*Saleae Logic set to capture signal wires of satellite receivers:&lt;br /&gt;
**Channel 0 = Ant B&lt;br /&gt;
**Channel 1 = Ant R&lt;br /&gt;
**GROUND = ground of Ant R&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The capture data has been split into separate runs to abide by the file size limits of this wiki :-)&lt;br /&gt;
&lt;br /&gt;
===DSM data 1===&lt;br /&gt;
[[File:DSM_data_1_-_DX7s.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX7s&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 2===&lt;br /&gt;
[[File:DSM_data_2_part_1_-_DX18.zip‎]] (DSM2 runs)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_2_part_2_-_DX18.zip‎]] (DSMX runs)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
**aux3 (7)&lt;br /&gt;
**aux4 (8)&lt;br /&gt;
**aux5 (9)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 3===&lt;br /&gt;
[[File:DSM_data_3_-_DX18_Xplus_channels.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
Data capture runs @ 500 KHz:&lt;br /&gt;
22ms DSM2 Xplus&lt;br /&gt;
22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 4===&lt;br /&gt;
[[File:DSM_data_4_part_1_-_DX18_Xplus_channels_12_MHz_capture.zip‎]] (DSM2 run)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_4_part_2_-_DX18_Xplus_channels_12_MHz_capture.zip‎]] (DSMX run)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
Data capture runs @ 12 MHz:&lt;br /&gt;
22ms DSM2 Xplus&lt;br /&gt;
22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 5===&lt;br /&gt;
[[File:DSM_data_5_part_1_-_DX18_RSSI.zip‎]] (DSM2 runs)&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_5_part_2_-_DX18_RSSI.zip]] (DSMX runs)&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18 in range test mode&lt;br /&gt;
Data capture runs @ 1 MHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
RSSI test:&lt;br /&gt;
&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*Power on RXes/start capture&lt;br /&gt;
*Press range test button (reduce TX power)&lt;br /&gt;
*Move TX away from RX while moving elevator (2) channel repeatedly until servo no longer moves/satellite LEDs are out&lt;br /&gt;
*release range test button (normal TX power)&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
== External References ==&lt;br /&gt;
* [http://www.cypress.com/?docID=28606 CYRF6936 Data Sheet]&lt;br /&gt;
* [http://www.deviationtx.com/ Deviation Firmware]&lt;br /&gt;
* [https://sites.google.com/site/mrdunk/interfacing-cypress-cyrf6936-to-avr-microcontrollers Interfacing with the CYRF6936]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1759502 RCGorups: DSMX Hacking]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16084</id>
		<title>DSM</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16084"/>
		<updated>2013-10-03T21:57:15Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added raw DSM data and descriptions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is DSM (DSM2/DSMX) ==&lt;br /&gt;
DSM2 and DSMX are widely used radio protocols for 2.4GHz spektrum RC transmitters and receivers. It is also used in the [[SuperbitRF]] project as datalink. The protocol makes it possible to have multiple receiver/transmitters in the 2.4GHz spektrum without much interference.&lt;br /&gt;
&lt;br /&gt;
=== The difference between DSM2 and DSMX ===&lt;br /&gt;
There is only a small difference between DSM2 and DSMX, which is the way they hop between different channels. In the DSM2 protocol the transmitter will choose two random channels, where the transmitter will look for the two best channels in the optimal case. In the DSMX protocol the transmitter and receiver both use the transmitter radio chip ID,which is send during the binding process, for generating 23 channels. Each time the transmitter transmits a packet or the receiver receives a packet they will hop to the next channel.&lt;br /&gt;
&lt;br /&gt;
From this information you can conclude that when you use DSM2, and both the channels that were chosen are getting used by a lot of other users your reception will drop enormously. In the DSMX protocol this problem was solved and makes it possible to have a lot more transmitters/receivers at the same bandwidth.&lt;br /&gt;
&lt;br /&gt;
== How does it work ==&lt;br /&gt;
''Note that this is reverse engineered and will contain errors.''&lt;br /&gt;
&lt;br /&gt;
In general you have three phases, the binding procedure, the syncing procedure and the normal transfer procedure. The transmitter doesn't have a syncing procedure, because it determines the timing for the receiver.&lt;br /&gt;
&lt;br /&gt;
=== The binding procedure ===&lt;br /&gt;
At the binding procedure both the transmitter and receiver will change to [[DSM#Definitions|SDR (Single Data Rate) mode]], a data code of 64 bits, a [[DSM#Definitions|SOP (Start Of Packet) Code]] of 64 bits and disable the [[DSM#Definitions|CRC Checksum]]. The transmitter will then choose a random odd channel and starts sending the [[DSM#Binding packet|binding packet]] at a very high rate. The receiver will start at the first odd channel and waits a bit longer then the rate the transmitters sends at. When it does receive a packet, it will check if it is a valid bind packet and goes to syncing mode. When it doesn't receive a valid packet it will go to the next channel and will repeat this.&lt;br /&gt;
&lt;br /&gt;
During the binding procedure the transmitter also sends the amount of RC channels that it has and in which amount of packets this channels will fit. They will either transmit all the channels in one packet or in two packets after each other.&lt;br /&gt;
&lt;br /&gt;
=== The syncing procedure ===&lt;br /&gt;
Because the transmitter doesn't have a syncing procedure, the transmitter is already in the transfer procedure. The receiver on the other hand needs to synchronise itself with the transmitter. &lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== The transfer procedure ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Some general information about the DSM2/DSMX protocol.&lt;br /&gt;
&lt;br /&gt;
=== Definitions ===&lt;br /&gt;
* '''Channel''': The channel in the 2.4GHz band(2.400GHz to 2.483GHz) which is used to transmit or receive. Each channel is 100mHz higher then the previous one starting by 0, and the 2.4GHz band is divided into 98 channels.&lt;br /&gt;
* '''(Transmission) Mode''': The mode at which the transmitter, or receiver is sending/receiving. There are  four different modes the transmitter/receiver could be in: GFSK(Gaussian Frequency Shift Keying), 8DR(Octal Data Rate), DDR(Double Data Rate), SDR(Single Data Rate). The ones used are 8DR and SDR, in SDR mode one bit is encoded in each derived code symbol transmitted. In 8DR mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''GFSK''': Gaussian Frequency Shift Keying Transfer mode. CYRF6936 in this mode data is transmitted at 1 Mbps, without any DSSS.&lt;br /&gt;
* '''8DR''': Octal Data Rate. CYRF6936 in this mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''DDR''': Double Data Rate. CYRF6936 in this mode two bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SDR''': Single Data Rate. CYRF6936 in this mode one bit is encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SOP code''': Start Of Packet code, are one or two bytes which are added at the start of the packet by the radio chip. These bytes are used to identify if a packet is received at a certain channel.&lt;br /&gt;
* '''Packet length''': The packet length(one byte) is send after the SOP code, and only includes the length of the payload data. Because it is one byte the limit of the payload length is 255, but because 8DR and SDR only transmit 16byte packets they will be automatically split up into multiple packets.&lt;br /&gt;
* '''CRC (Checksum)''': The CRC Checksum are two bytes which are send at the end of the packet to check if the received packet was valid. It can detect the following errors: any one bit error, any two bits error, any odd number of bits in error and an error burst as wide as the checksum itself.&lt;br /&gt;
* '''CYRF6936''': A radio chip used in several transmitters and the SuperbitRF project.&lt;br /&gt;
&lt;br /&gt;
=== Packet example ===&lt;br /&gt;
Here is an image of an example packet including the Preamble, SOP, Length, Payload Data and the CRC.&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_packet_example.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Binding packet ===&lt;br /&gt;
The binding packet has a length of 16 bytes, the exact size the SDR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [01] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [02] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [03] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [04] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [05] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [06] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [07] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [08] (sum 00-&amp;gt;07 + 384 - 16) MSB&lt;br /&gt;
 [09] (sum 00-&amp;gt;07 + 384 - 16) LSB&lt;br /&gt;
 [10] 0x01 (not known yet)&lt;br /&gt;
 [11] number of RC channels&lt;br /&gt;
 [12] protocol used (0x01:DSM2 1packet, 0x02: DSM2 2packets, 0x10: DSM2 SuperbitRF, 0x11: DSMX SuperbitRF, 0xA2: DSMX 1packet, 0xB2: DSMX 2packets)&lt;br /&gt;
 [13] 0x00 (not known yet)&lt;br /&gt;
 [14] (sum 00-&amp;gt;13 + 384 - 16) MSB&lt;br /&gt;
 [15] (sum 00-&amp;gt;13 + 384 - 16) LSB&lt;br /&gt;
&lt;br /&gt;
=== Transfer packet ===&lt;br /&gt;
The transfer packet has a length of 16 bytes, the exact size 8DR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 2&lt;br /&gt;
 [01] radio chip ID byte 3 (+packet loss bit in SuperbitRF)&lt;br /&gt;
 [02-15] data&lt;br /&gt;
&lt;br /&gt;
==Raw DSM data capture files==&lt;br /&gt;
&lt;br /&gt;
To aid the understanding of the various DSM protocols, data was captured using the following hardware:&lt;br /&gt;
&lt;br /&gt;
Main receiver: Spektrum AR9020&lt;br /&gt;
Satellite receivers: 2x Spektrum 9645 connected to Ant B and Ant R ports&lt;br /&gt;
Saleae Logic set to capture signal wires of satellite receivers:&lt;br /&gt;
- Channel 0 = Ant B&lt;br /&gt;
- Channel 1 = Ant R&lt;br /&gt;
- GROUND = ground of Ant R&lt;br /&gt;
&lt;br /&gt;
The capture data has been split into separate runs to abide by the file size limits of this wiki :-)&lt;br /&gt;
&lt;br /&gt;
===DSM data 1===&lt;br /&gt;
[[File:DSM_data_1_-_DX7s.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX7s&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 2===&lt;br /&gt;
[[File:DSM_data_2_part_1_-_DX18.zip‎]]&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_2_part_2_-_DX18.zip‎]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
**aux3 (7)&lt;br /&gt;
**aux4 (8)&lt;br /&gt;
**aux5 (9)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
===DSM data 3===&lt;br /&gt;
[[File:DSM_data_3_-_DX18_Xplus_channels.zip]]&lt;br /&gt;
DSM data 3:&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
Data capture runs @ 500 KHz:&lt;br /&gt;
22ms DSM2 Xplus&lt;br /&gt;
22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 4===&lt;br /&gt;
[[File:DSM_data_4_part_1_-_DX18_Xplus_channels_12_MHz_capture.zip‎]]&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_4_part_2_-_DX18_Xplus_channels_12_MHz_capture.zip‎]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18&lt;br /&gt;
Data capture runs @ 12 MHz:&lt;br /&gt;
22ms DSM2 Xplus&lt;br /&gt;
22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0) mixed with X+1&lt;br /&gt;
**X+2&lt;br /&gt;
**X+3&lt;br /&gt;
**X+4&lt;br /&gt;
**X+5&lt;br /&gt;
**X+6&lt;br /&gt;
**X+7&lt;br /&gt;
**X+8&lt;br /&gt;
  &lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
===DSM data 5===&lt;br /&gt;
[[File:DSM_data_5_part_1_-_DX18_RSSI.zip‎]]&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_5_part_2_-_DX18_RSSI.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX18 in range test mode&lt;br /&gt;
Data capture runs @ 1 MHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
*22ms DSM2 Xplus&lt;br /&gt;
*22ms DSMX Xplus&lt;br /&gt;
&lt;br /&gt;
RSSI test:&lt;br /&gt;
&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*Power on RXes/start capture&lt;br /&gt;
*Press range test button (reduce TX power)&lt;br /&gt;
*Move TX away from RX while moving elevator (2) channel repeatedly until servo no longer moves/satellite LEDs are out&lt;br /&gt;
*release range test button (normal TX power)&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
== External References ==&lt;br /&gt;
* [http://www.cypress.com/?docID=28606 CYRF6936 Data Sheet]&lt;br /&gt;
* [http://www.deviationtx.com/ Deviation Firmware]&lt;br /&gt;
* [https://sites.google.com/site/mrdunk/interfacing-cypress-cyrf6936-to-avr-microcontrollers Interfacing with the CYRF6936]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1759502 RCGorups: DSMX Hacking]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_5_part_2_-_DX18_RSSI.zip&amp;diff=16083</id>
		<title>File:DSM data 5 part 2 - DX18 RSSI.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_5_part_2_-_DX18_RSSI.zip&amp;diff=16083"/>
		<updated>2013-10-03T21:56:48Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_5_part_1_-_DX18_RSSI.zip&amp;diff=16082</id>
		<title>File:DSM data 5 part 1 - DX18 RSSI.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_5_part_1_-_DX18_RSSI.zip&amp;diff=16082"/>
		<updated>2013-10-03T21:56:04Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_4_part_2_-_DX18_Xplus_channels_12_MHz_capture.zip&amp;diff=16081</id>
		<title>File:DSM data 4 part 2 - DX18 Xplus channels 12 MHz capture.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_4_part_2_-_DX18_Xplus_channels_12_MHz_capture.zip&amp;diff=16081"/>
		<updated>2013-10-03T21:52:46Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_4_part_1_-_DX18_Xplus_channels_12_MHz_capture.zip&amp;diff=16080</id>
		<title>File:DSM data 4 part 1 - DX18 Xplus channels 12 MHz capture.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_4_part_1_-_DX18_Xplus_channels_12_MHz_capture.zip&amp;diff=16080"/>
		<updated>2013-10-03T21:52:16Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_3_-_DX18_Xplus_channels.zip&amp;diff=16079</id>
		<title>File:DSM data 3 - DX18 Xplus channels.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_3_-_DX18_Xplus_channels.zip&amp;diff=16079"/>
		<updated>2013-10-03T21:49:26Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_2_part_2_-_DX18.zip&amp;diff=16078</id>
		<title>File:DSM data 2 part 2 - DX18.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_2_part_2_-_DX18.zip&amp;diff=16078"/>
		<updated>2013-10-03T21:45:26Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_2_part_1_-_DX18.zip&amp;diff=16077</id>
		<title>File:DSM data 2 part 1 - DX18.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_2_part_1_-_DX18.zip&amp;diff=16077"/>
		<updated>2013-10-03T21:44:39Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16076</id>
		<title>DSM</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16076"/>
		<updated>2013-10-03T21:43:04Z</updated>

		<summary type="html">&lt;p&gt;Jkg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is DSM (DSM2/DSMX) ==&lt;br /&gt;
DSM2 and DSMX are widely used radio protocols for 2.4GHz spektrum RC transmitters and receivers. It is also used in the [[SuperbitRF]] project as datalink. The protocol makes it possible to have multiple receiver/transmitters in the 2.4GHz spektrum without much interference.&lt;br /&gt;
&lt;br /&gt;
=== The difference between DSM2 and DSMX ===&lt;br /&gt;
There is only a small difference between DSM2 and DSMX, which is the way they hop between different channels. In the DSM2 protocol the transmitter will choose two random channels, where the transmitter will look for the two best channels in the optimal case. In the DSMX protocol the transmitter and receiver both use the transmitter radio chip ID,which is send during the binding process, for generating 23 channels. Each time the transmitter transmits a packet or the receiver receives a packet they will hop to the next channel.&lt;br /&gt;
&lt;br /&gt;
From this information you can conclude that when you use DSM2, and both the channels that were chosen are getting used by a lot of other users your reception will drop enormously. In the DSMX protocol this problem was solved and makes it possible to have a lot more transmitters/receivers at the same bandwidth.&lt;br /&gt;
&lt;br /&gt;
== How does it work ==&lt;br /&gt;
''Note that this is reverse engineered and will contain errors.''&lt;br /&gt;
&lt;br /&gt;
In general you have three phases, the binding procedure, the syncing procedure and the normal transfer procedure. The transmitter doesn't have a syncing procedure, because it determines the timing for the receiver.&lt;br /&gt;
&lt;br /&gt;
=== The binding procedure ===&lt;br /&gt;
At the binding procedure both the transmitter and receiver will change to [[DSM#Definitions|SDR (Single Data Rate) mode]], a data code of 64 bits, a [[DSM#Definitions|SOP (Start Of Packet) Code]] of 64 bits and disable the [[DSM#Definitions|CRC Checksum]]. The transmitter will then choose a random odd channel and starts sending the [[DSM#Binding packet|binding packet]] at a very high rate. The receiver will start at the first odd channel and waits a bit longer then the rate the transmitters sends at. When it does receive a packet, it will check if it is a valid bind packet and goes to syncing mode. When it doesn't receive a valid packet it will go to the next channel and will repeat this.&lt;br /&gt;
&lt;br /&gt;
During the binding procedure the transmitter also sends the amount of RC channels that it has and in which amount of packets this channels will fit. They will either transmit all the channels in one packet or in two packets after each other.&lt;br /&gt;
&lt;br /&gt;
=== The syncing procedure ===&lt;br /&gt;
Because the transmitter doesn't have a syncing procedure, the transmitter is already in the transfer procedure. The receiver on the other hand needs to synchronise itself with the transmitter. &lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== The transfer procedure ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Some general information about the DSM2/DSMX protocol.&lt;br /&gt;
&lt;br /&gt;
=== Definitions ===&lt;br /&gt;
* '''Channel''': The channel in the 2.4GHz band(2.400GHz to 2.483GHz) which is used to transmit or receive. Each channel is 100mHz higher then the previous one starting by 0, and the 2.4GHz band is divided into 98 channels.&lt;br /&gt;
* '''(Transmission) Mode''': The mode at which the transmitter, or receiver is sending/receiving. There are  four different modes the transmitter/receiver could be in: GFSK(Gaussian Frequency Shift Keying), 8DR(Octal Data Rate), DDR(Double Data Rate), SDR(Single Data Rate). The ones used are 8DR and SDR, in SDR mode one bit is encoded in each derived code symbol transmitted. In 8DR mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''GFSK''': Gaussian Frequency Shift Keying Transfer mode. CYRF6936 in this mode data is transmitted at 1 Mbps, without any DSSS.&lt;br /&gt;
* '''8DR''': Octal Data Rate. CYRF6936 in this mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''DDR''': Double Data Rate. CYRF6936 in this mode two bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SDR''': Single Data Rate. CYRF6936 in this mode one bit is encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SOP code''': Start Of Packet code, are one or two bytes which are added at the start of the packet by the radio chip. These bytes are used to identify if a packet is received at a certain channel.&lt;br /&gt;
* '''Packet length''': The packet length(one byte) is send after the SOP code, and only includes the length of the payload data. Because it is one byte the limit of the payload length is 255, but because 8DR and SDR only transmit 16byte packets they will be automatically split up into multiple packets.&lt;br /&gt;
* '''CRC (Checksum)''': The CRC Checksum are two bytes which are send at the end of the packet to check if the received packet was valid. It can detect the following errors: any one bit error, any two bits error, any odd number of bits in error and an error burst as wide as the checksum itself.&lt;br /&gt;
* '''CYRF6936''': A radio chip used in several transmitters and the SuperbitRF project.&lt;br /&gt;
&lt;br /&gt;
=== Packet example ===&lt;br /&gt;
Here is an image of an example packet including the Preamble, SOP, Length, Payload Data and the CRC.&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_packet_example.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Binding packet ===&lt;br /&gt;
The binding packet has a length of 16 bytes, the exact size the SDR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [01] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [02] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [03] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [04] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [05] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [06] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [07] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [08] (sum 00-&amp;gt;07 + 384 - 16) MSB&lt;br /&gt;
 [09] (sum 00-&amp;gt;07 + 384 - 16) LSB&lt;br /&gt;
 [10] 0x01 (not known yet)&lt;br /&gt;
 [11] number of RC channels&lt;br /&gt;
 [12] protocol used (0x01:DSM2 1packet, 0x02: DSM2 2packets, 0x10: DSM2 SuperbitRF, 0x11: DSMX SuperbitRF, 0xA2: DSMX 1packet, 0xB2: DSMX 2packets)&lt;br /&gt;
 [13] 0x00 (not known yet)&lt;br /&gt;
 [14] (sum 00-&amp;gt;13 + 384 - 16) MSB&lt;br /&gt;
 [15] (sum 00-&amp;gt;13 + 384 - 16) LSB&lt;br /&gt;
&lt;br /&gt;
=== Transfer packet ===&lt;br /&gt;
The transfer packet has a length of 16 bytes, the exact size 8DR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 2&lt;br /&gt;
 [01] radio chip ID byte 3 (+packet loss bit in SuperbitRF)&lt;br /&gt;
 [02-15] data&lt;br /&gt;
&lt;br /&gt;
==Raw DSM data capture files==&lt;br /&gt;
&lt;br /&gt;
To aid the understanding of the various DSM protocols, data was captured using the following hardware:&lt;br /&gt;
&lt;br /&gt;
Main receiver: Spektrum AR9020&lt;br /&gt;
Satellite receivers: 2x Spektrum 9645 connected to Ant B and Ant R ports&lt;br /&gt;
Saleae Logic set to capture signal wires of satellite receivers:&lt;br /&gt;
- Channel 0 = Ant B&lt;br /&gt;
- Channel 1 = Ant R&lt;br /&gt;
- GROUND = ground of Ant R&lt;br /&gt;
&lt;br /&gt;
The capture data has been split into separate runs to abide by the file size limits of this wiki :-)&lt;br /&gt;
&lt;br /&gt;
===DSM data 1===&lt;br /&gt;
[[File:DSM_data_1_-_DX7s.zip]]&lt;br /&gt;
&lt;br /&gt;
Transmitter: Spektrum DX7s&lt;br /&gt;
Data capture runs @ 500KHz:&lt;br /&gt;
*11ms DSM2&lt;br /&gt;
*11ms DSMX&lt;br /&gt;
*22ms DSM2&lt;br /&gt;
*22ms DSMX&lt;br /&gt;
&lt;br /&gt;
Bind:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on with bind plug in place&lt;br /&gt;
*TX switched on while holding down bind button&lt;br /&gt;
*wait for satellite LEDs to go solid on&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
Channel movement:&lt;br /&gt;
*Logic set to trigger on rising edge.&lt;br /&gt;
*RXes powered on&lt;br /&gt;
*TX switched on&lt;br /&gt;
*wait for satellite LEDs to power on/servos to center&lt;br /&gt;
*each channel individually moved (DSM channel #)&lt;br /&gt;
**throttle (0)&lt;br /&gt;
**aileron (1)&lt;br /&gt;
**elevator (2)&lt;br /&gt;
**rudder (3)&lt;br /&gt;
**gear (4)&lt;br /&gt;
**aux1/flap (5)&lt;br /&gt;
**aux2 (6)&lt;br /&gt;
*TX switched off&lt;br /&gt;
*power down RXes&lt;br /&gt;
*stop capture&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External References ==&lt;br /&gt;
* [http://www.cypress.com/?docID=28606 CYRF6936 Data Sheet]&lt;br /&gt;
* [http://www.deviationtx.com/ Deviation Firmware]&lt;br /&gt;
* [https://sites.google.com/site/mrdunk/interfacing-cypress-cyrf6936-to-avr-microcontrollers Interfacing with the CYRF6936]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1759502 RCGorups: DSMX Hacking]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16075</id>
		<title>DSM</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16075"/>
		<updated>2013-10-03T21:36:46Z</updated>

		<summary type="html">&lt;p&gt;Jkg: link syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is DSM (DSM2/DSMX) ==&lt;br /&gt;
DSM2 and DSMX are widely used radio protocols for 2.4GHz spektrum RC transmitters and receivers. It is also used in the [[SuperbitRF]] project as datalink. The protocol makes it possible to have multiple receiver/transmitters in the 2.4GHz spektrum without much interference.&lt;br /&gt;
&lt;br /&gt;
=== The difference between DSM2 and DSMX ===&lt;br /&gt;
There is only a small difference between DSM2 and DSMX, which is the way they hop between different channels. In the DSM2 protocol the transmitter will choose two random channels, where the transmitter will look for the two best channels in the optimal case. In the DSMX protocol the transmitter and receiver both use the transmitter radio chip ID,which is send during the binding process, for generating 23 channels. Each time the transmitter transmits a packet or the receiver receives a packet they will hop to the next channel.&lt;br /&gt;
&lt;br /&gt;
From this information you can conclude that when you use DSM2, and both the channels that were chosen are getting used by a lot of other users your reception will drop enormously. In the DSMX protocol this problem was solved and makes it possible to have a lot more transmitters/receivers at the same bandwidth.&lt;br /&gt;
&lt;br /&gt;
== How does it work ==&lt;br /&gt;
''Note that this is reverse engineered and will contain errors.''&lt;br /&gt;
&lt;br /&gt;
In general you have three phases, the binding procedure, the syncing procedure and the normal transfer procedure. The transmitter doesn't have a syncing procedure, because it determines the timing for the receiver.&lt;br /&gt;
&lt;br /&gt;
=== The binding procedure ===&lt;br /&gt;
At the binding procedure both the transmitter and receiver will change to [[DSM#Definitions|SDR (Single Data Rate) mode]], a data code of 64 bits, a [[DSM#Definitions|SOP (Start Of Packet) Code]] of 64 bits and disable the [[DSM#Definitions|CRC Checksum]]. The transmitter will then choose a random odd channel and starts sending the [[DSM#Binding packet|binding packet]] at a very high rate. The receiver will start at the first odd channel and waits a bit longer then the rate the transmitters sends at. When it does receive a packet, it will check if it is a valid bind packet and goes to syncing mode. When it doesn't receive a valid packet it will go to the next channel and will repeat this.&lt;br /&gt;
&lt;br /&gt;
During the binding procedure the transmitter also sends the amount of RC channels that it has and in which amount of packets this channels will fit. They will either transmit all the channels in one packet or in two packets after each other.&lt;br /&gt;
&lt;br /&gt;
=== The syncing procedure ===&lt;br /&gt;
Because the transmitter doesn't have a syncing procedure, the transmitter is already in the transfer procedure. The receiver on the other hand needs to synchronise itself with the transmitter. &lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== The transfer procedure ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Some general information about the DSM2/DSMX protocol.&lt;br /&gt;
&lt;br /&gt;
=== Definitions ===&lt;br /&gt;
* '''Channel''': The channel in the 2.4GHz band(2.400GHz to 2.483GHz) which is used to transmit or receive. Each channel is 100mHz higher then the previous one starting by 0, and the 2.4GHz band is divided into 98 channels.&lt;br /&gt;
* '''(Transmission) Mode''': The mode at which the transmitter, or receiver is sending/receiving. There are  four different modes the transmitter/receiver could be in: GFSK(Gaussian Frequency Shift Keying), 8DR(Octal Data Rate), DDR(Double Data Rate), SDR(Single Data Rate). The ones used are 8DR and SDR, in SDR mode one bit is encoded in each derived code symbol transmitted. In 8DR mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''GFSK''': Gaussian Frequency Shift Keying Transfer mode. CYRF6936 in this mode data is transmitted at 1 Mbps, without any DSSS.&lt;br /&gt;
* '''8DR''': Octal Data Rate. CYRF6936 in this mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''DDR''': Double Data Rate. CYRF6936 in this mode two bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SDR''': Single Data Rate. CYRF6936 in this mode one bit is encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SOP code''': Start Of Packet code, are one or two bytes which are added at the start of the packet by the radio chip. These bytes are used to identify if a packet is received at a certain channel.&lt;br /&gt;
* '''Packet length''': The packet length(one byte) is send after the SOP code, and only includes the length of the payload data. Because it is one byte the limit of the payload length is 255, but because 8DR and SDR only transmit 16byte packets they will be automatically split up into multiple packets.&lt;br /&gt;
* '''CRC (Checksum)''': The CRC Checksum are two bytes which are send at the end of the packet to check if the received packet was valid. It can detect the following errors: any one bit error, any two bits error, any odd number of bits in error and an error burst as wide as the checksum itself.&lt;br /&gt;
* '''CYRF6936''': A radio chip used in several transmitters and the SuperbitRF project.&lt;br /&gt;
&lt;br /&gt;
=== Packet example ===&lt;br /&gt;
Here is an image of an example packet including the Preamble, SOP, Length, Payload Data and the CRC.&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_packet_example.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Binding packet ===&lt;br /&gt;
The binding packet has a length of 16 bytes, the exact size the SDR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [01] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [02] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [03] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [04] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [05] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [06] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [07] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [08] (sum 00-&amp;gt;07 + 384 - 16) MSB&lt;br /&gt;
 [09] (sum 00-&amp;gt;07 + 384 - 16) LSB&lt;br /&gt;
 [10] 0x01 (not known yet)&lt;br /&gt;
 [11] number of RC channels&lt;br /&gt;
 [12] protocol used (0x01:DSM2 1packet, 0x02: DSM2 2packets, 0x10: DSM2 SuperbitRF, 0x11: DSMX SuperbitRF, 0xA2: DSMX 1packet, 0xB2: DSMX 2packets)&lt;br /&gt;
 [13] 0x00 (not known yet)&lt;br /&gt;
 [14] (sum 00-&amp;gt;13 + 384 - 16) MSB&lt;br /&gt;
 [15] (sum 00-&amp;gt;13 + 384 - 16) LSB&lt;br /&gt;
&lt;br /&gt;
=== Transfer packet ===&lt;br /&gt;
The transfer packet has a length of 16 bytes, the exact size 8DR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 2&lt;br /&gt;
 [01] radio chip ID byte 3 (+packet loss bit in SuperbitRF)&lt;br /&gt;
 [02-15] data&lt;br /&gt;
&lt;br /&gt;
==Raw DSM data capture files==&lt;br /&gt;
&lt;br /&gt;
To aid the understanding of the various DSM protocols, data was captured using the following hardware:&lt;br /&gt;
&lt;br /&gt;
Main receiver: Spektrum AR9020&lt;br /&gt;
Satellite receivers: 2x Spektrum 9645 connected to Ant B and Ant R ports&lt;br /&gt;
Saleae Logic set to capture signal wires of satellite receivers:&lt;br /&gt;
- Channel 0 = Ant B&lt;br /&gt;
- Channel 1 = Ant R&lt;br /&gt;
- GROUND = ground of Ant R&lt;br /&gt;
&lt;br /&gt;
[[DSM_data_1_-_DX7s.zip]]&lt;br /&gt;
&lt;br /&gt;
== External References ==&lt;br /&gt;
* [http://www.cypress.com/?docID=28606 CYRF6936 Data Sheet]&lt;br /&gt;
* [http://www.deviationtx.com/ Deviation Firmware]&lt;br /&gt;
* [https://sites.google.com/site/mrdunk/interfacing-cypress-cyrf6936-to-avr-microcontrollers Interfacing with the CYRF6936]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1759502 RCGorups: DSMX Hacking]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16074</id>
		<title>DSM</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=DSM&amp;diff=16074"/>
		<updated>2013-10-03T21:36:14Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added raw data captures (in progress)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is DSM (DSM2/DSMX) ==&lt;br /&gt;
DSM2 and DSMX are widely used radio protocols for 2.4GHz spektrum RC transmitters and receivers. It is also used in the [[SuperbitRF]] project as datalink. The protocol makes it possible to have multiple receiver/transmitters in the 2.4GHz spektrum without much interference.&lt;br /&gt;
&lt;br /&gt;
=== The difference between DSM2 and DSMX ===&lt;br /&gt;
There is only a small difference between DSM2 and DSMX, which is the way they hop between different channels. In the DSM2 protocol the transmitter will choose two random channels, where the transmitter will look for the two best channels in the optimal case. In the DSMX protocol the transmitter and receiver both use the transmitter radio chip ID,which is send during the binding process, for generating 23 channels. Each time the transmitter transmits a packet or the receiver receives a packet they will hop to the next channel.&lt;br /&gt;
&lt;br /&gt;
From this information you can conclude that when you use DSM2, and both the channels that were chosen are getting used by a lot of other users your reception will drop enormously. In the DSMX protocol this problem was solved and makes it possible to have a lot more transmitters/receivers at the same bandwidth.&lt;br /&gt;
&lt;br /&gt;
== How does it work ==&lt;br /&gt;
''Note that this is reverse engineered and will contain errors.''&lt;br /&gt;
&lt;br /&gt;
In general you have three phases, the binding procedure, the syncing procedure and the normal transfer procedure. The transmitter doesn't have a syncing procedure, because it determines the timing for the receiver.&lt;br /&gt;
&lt;br /&gt;
=== The binding procedure ===&lt;br /&gt;
At the binding procedure both the transmitter and receiver will change to [[DSM#Definitions|SDR (Single Data Rate) mode]], a data code of 64 bits, a [[DSM#Definitions|SOP (Start Of Packet) Code]] of 64 bits and disable the [[DSM#Definitions|CRC Checksum]]. The transmitter will then choose a random odd channel and starts sending the [[DSM#Binding packet|binding packet]] at a very high rate. The receiver will start at the first odd channel and waits a bit longer then the rate the transmitters sends at. When it does receive a packet, it will check if it is a valid bind packet and goes to syncing mode. When it doesn't receive a valid packet it will go to the next channel and will repeat this.&lt;br /&gt;
&lt;br /&gt;
During the binding procedure the transmitter also sends the amount of RC channels that it has and in which amount of packets this channels will fit. They will either transmit all the channels in one packet or in two packets after each other.&lt;br /&gt;
&lt;br /&gt;
=== The syncing procedure ===&lt;br /&gt;
Because the transmitter doesn't have a syncing procedure, the transmitter is already in the transfer procedure. The receiver on the other hand needs to synchronise itself with the transmitter. &lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== The transfer procedure ===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Some general information about the DSM2/DSMX protocol.&lt;br /&gt;
&lt;br /&gt;
=== Definitions ===&lt;br /&gt;
* '''Channel''': The channel in the 2.4GHz band(2.400GHz to 2.483GHz) which is used to transmit or receive. Each channel is 100mHz higher then the previous one starting by 0, and the 2.4GHz band is divided into 98 channels.&lt;br /&gt;
* '''(Transmission) Mode''': The mode at which the transmitter, or receiver is sending/receiving. There are  four different modes the transmitter/receiver could be in: GFSK(Gaussian Frequency Shift Keying), 8DR(Octal Data Rate), DDR(Double Data Rate), SDR(Single Data Rate). The ones used are 8DR and SDR, in SDR mode one bit is encoded in each derived code symbol transmitted. In 8DR mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''GFSK''': Gaussian Frequency Shift Keying Transfer mode. CYRF6936 in this mode data is transmitted at 1 Mbps, without any DSSS.&lt;br /&gt;
* '''8DR''': Octal Data Rate. CYRF6936 in this mode eight bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''DDR''': Double Data Rate. CYRF6936 in this mode two bits are encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SDR''': Single Data Rate. CYRF6936 in this mode one bit is encoded in each derived code symbol transmitted.&lt;br /&gt;
* '''SOP code''': Start Of Packet code, are one or two bytes which are added at the start of the packet by the radio chip. These bytes are used to identify if a packet is received at a certain channel.&lt;br /&gt;
* '''Packet length''': The packet length(one byte) is send after the SOP code, and only includes the length of the payload data. Because it is one byte the limit of the payload length is 255, but because 8DR and SDR only transmit 16byte packets they will be automatically split up into multiple packets.&lt;br /&gt;
* '''CRC (Checksum)''': The CRC Checksum are two bytes which are send at the end of the packet to check if the received packet was valid. It can detect the following errors: any one bit error, any two bits error, any odd number of bits in error and an error burst as wide as the checksum itself.&lt;br /&gt;
* '''CYRF6936''': A radio chip used in several transmitters and the SuperbitRF project.&lt;br /&gt;
&lt;br /&gt;
=== Packet example ===&lt;br /&gt;
Here is an image of an example packet including the Preamble, SOP, Length, Payload Data and the CRC.&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_packet_example.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Binding packet ===&lt;br /&gt;
The binding packet has a length of 16 bytes, the exact size the SDR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [01] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [02] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [03] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [04] radio chip ID byte 0 (inverted)&lt;br /&gt;
 [05] radio chip ID byte 1 (inverted)&lt;br /&gt;
 [06] radio chip ID byte 2 (inverted)&lt;br /&gt;
 [07] radio chip ID byte 3 (inverted)&lt;br /&gt;
 [08] (sum 00-&amp;gt;07 + 384 - 16) MSB&lt;br /&gt;
 [09] (sum 00-&amp;gt;07 + 384 - 16) LSB&lt;br /&gt;
 [10] 0x01 (not known yet)&lt;br /&gt;
 [11] number of RC channels&lt;br /&gt;
 [12] protocol used (0x01:DSM2 1packet, 0x02: DSM2 2packets, 0x10: DSM2 SuperbitRF, 0x11: DSMX SuperbitRF, 0xA2: DSMX 1packet, 0xB2: DSMX 2packets)&lt;br /&gt;
 [13] 0x00 (not known yet)&lt;br /&gt;
 [14] (sum 00-&amp;gt;13 + 384 - 16) MSB&lt;br /&gt;
 [15] (sum 00-&amp;gt;13 + 384 - 16) LSB&lt;br /&gt;
&lt;br /&gt;
=== Transfer packet ===&lt;br /&gt;
The transfer packet has a length of 16 bytes, the exact size 8DR mode can send at once.&lt;br /&gt;
 [00] radio chip ID byte 2&lt;br /&gt;
 [01] radio chip ID byte 3 (+packet loss bit in SuperbitRF)&lt;br /&gt;
 [02-15] data&lt;br /&gt;
&lt;br /&gt;
==Raw DSM data capture files==&lt;br /&gt;
&lt;br /&gt;
To aid the understanding of the various DSM protocols, data was captured using the following hardware:&lt;br /&gt;
&lt;br /&gt;
Main receiver: Spektrum AR9020&lt;br /&gt;
Satellite receivers: 2x Spektrum 9645 connected to Ant B and Ant R ports&lt;br /&gt;
Saleae Logic set to capture signal wires of satellite receivers:&lt;br /&gt;
- Channel 0 = Ant B&lt;br /&gt;
- Channel 1 = Ant R&lt;br /&gt;
- GROUND = ground of Ant R&lt;br /&gt;
&lt;br /&gt;
[[File:DSM_data_1_-_DX7s.zip]]&lt;br /&gt;
&lt;br /&gt;
== External References ==&lt;br /&gt;
* [http://www.cypress.com/?docID=28606 CYRF6936 Data Sheet]&lt;br /&gt;
* [http://www.deviationtx.com/ Deviation Firmware]&lt;br /&gt;
* [https://sites.google.com/site/mrdunk/interfacing-cypress-cyrf6936-to-avr-microcontrollers Interfacing with the CYRF6936]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1759502 RCGorups: DSMX Hacking]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_1_-_DX7s.zip&amp;diff=16073</id>
		<title>File:DSM data 1 - DX7s.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=File:DSM_data_1_-_DX7s.zip&amp;diff=16073"/>
		<updated>2013-10-03T21:28:53Z</updated>

		<summary type="html">&lt;p&gt;Jkg: DSM2 and DSMX data captured from satellite receivers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DSM2 and DSMX data captured from satellite receivers&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Radio_Control&amp;diff=15897</id>
		<title>Radio Control</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Radio_Control&amp;diff=15897"/>
		<updated>2013-09-13T22:42:55Z</updated>

		<summary type="html">&lt;p&gt;Jkg: fixed MHz --&amp;gt; GHz&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PPM Radio Configuration ==&lt;br /&gt;
&lt;br /&gt;
This XML file, usually located in the &amp;lt;tt&amp;gt;conf/radios&amp;lt;/tt&amp;gt; directory, contains a description of the radio control transmitter PPM signal. It should follow the grammar described in &amp;lt;tt&amp;gt;radio.dtd&amp;lt;/tt&amp;gt;. &amp;lt;b&amp;gt;This is only used for PPM transmitters so it does not apply to DSM/DSM2/FASST/FHSS or other 2.4Ghz radios.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The contents are an '''ordered''' sequence of elements describing each channel with its name and its range:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;!DOCTYPE radio SYSTEM &amp;quot;radio.dtd&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;radio name=&amp;quot;cockpitMM&amp;quot; data_min=&amp;quot;900&amp;quot; data_max=&amp;quot;2100&amp;quot; sync_min =&amp;quot;5000&amp;quot; sync_max =&amp;quot;15000&amp;quot; pulse_type=&amp;quot;POSITIVE&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;D&amp;quot; function=&amp;quot;ROLL&amp;quot;     min=&amp;quot;2000&amp;quot; neutral=&amp;quot;1498&amp;quot; max=&amp;quot;1000&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;E&amp;quot; function=&amp;quot;MODE&amp;quot;     min=&amp;quot;2000&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1000&amp;quot; average=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/radio&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the channels must be the order of the pulses in the PPM signal.&lt;br /&gt;
&lt;br /&gt;
Among the top attributes, we find&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;: used only in debug traces.&lt;br /&gt;
* &amp;lt;tt&amp;gt;data_min&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;_max&amp;lt;/tt&amp;gt;): the minimum (resp. max) width (in microseconds) used to code one channel of the PPM signal.&lt;br /&gt;
* &amp;lt;tt&amp;gt;sync_min&amp;lt;/tt&amp;gt; (resp. &amp;lt;tt&amp;gt;_max&amp;lt;/tt&amp;gt;): the minimum (resp. max) width (in microseconds) between two impulses set of the PPM signal.&lt;br /&gt;
* &amp;lt;tt&amp;gt;pulse_type&amp;lt;/tt&amp;gt;: the polarity of the PPM pulse. Can be either &amp;lt;tt&amp;gt;POSITIVE&amp;lt;/tt&amp;gt; (FUTABA, Hitec, Multiplex etc) or &amp;lt;tt&amp;gt;NEGATIVE&amp;lt;/tt&amp;gt; (JR, Graupner etc.).&amp;lt;br/&amp;gt;With &amp;lt;tt&amp;gt;POSITIVE&amp;lt;/tt&amp;gt; it will trigger on the rising flank to measure the time of the positive pulse, with &amp;lt;tt&amp;gt;NEGATIVE&amp;lt;/tt&amp;gt; on the falling flank (for a negative pulse width).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each channel is described with its transmitter name (&amp;lt;tt&amp;gt;ctl&amp;lt;/tt&amp;gt;), its &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt; name, its range in microseconds and its neutral value in microseconds.&lt;br /&gt;
These values are used by the autopilot to compute a normalized input from the PPM signal (this file is preprocessed and the produced code is included in the airborne code). Note that the &amp;lt;tt&amp;gt;min&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;max&amp;lt;/tt&amp;gt; attributes can be exchanged to reverse the direction of the command.&lt;br /&gt;
&lt;br /&gt;
'''Wrong attributes of the &amp;quot;radio&amp;quot; element will prevent the decoder to recognize any PPM frame; same for a wrong number or channels.'''&lt;br /&gt;
&lt;br /&gt;
=== Number of channels ===&lt;br /&gt;
&lt;br /&gt;
Note that the number of channels in your radio file &amp;lt;b&amp;gt;must exactly match&amp;lt;/b&amp;gt; the number of channels in the ppm sum signal the autopilot receives.&amp;lt;br&amp;gt;&lt;br /&gt;
Also the ''function'' names must be unique.&lt;br /&gt;
&lt;br /&gt;
* in case of analog 35MHz receivers it is the RC - TRANSMITTER that makes the pulse train (receiver only does RF part) &lt;br /&gt;
** radio file depends on transmitter, you could swap to another receiver (and e.g. you can use a 4channel receiver to receive 9 pulses :-) )&lt;br /&gt;
* in case of digital receivers it is not the transmitter but the receiver that makes the pulses&lt;br /&gt;
** e.g. Futaba Fasst 6017: you can use any compatible transmitter without need to change the radio file&lt;br /&gt;
* in case of an encoder it is the encoder that makes the summed pulse&lt;br /&gt;
** if the encoder software makes 8 pulses, even with a 5 channel RC connected paparazzi will get 8: so the radio file should read 8&lt;br /&gt;
&lt;br /&gt;
This means if your transmitter sends for example a PPM18 (Graupner/JR) signal you have nine (9) different servo channels. Even if you use a receiver with less channels you must set up &amp;lt;b&amp;gt;all&amp;lt;/b&amp;gt; transmitting servos, even if you do not use them then you must use &amp;quot;bogus switches&amp;quot; related to functions. For example a six (6) servo channels out receiver with five (5) functions used in combination with a nine (9) servo channels transmitter would need four (4) bogus entries. (5 + 4 = 9)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;lt;channel ctl=&amp;quot;NoneA&amp;quot;	              function=&amp;quot;NOTUSEDA&amp;quot;    	min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;channel ctl=&amp;quot;NoneB&amp;quot;	              function=&amp;quot;NOTUSEDB&amp;quot;    	min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;channel ctl=&amp;quot;NoneC	              function=&amp;quot;NOTUSEDC&amp;quot;    	min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;channel ctl=&amp;quot;NoneD&amp;quot;	              function=&amp;quot;NOTUSEDD&amp;quot;    	min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Averaging ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;average&amp;lt;/tt&amp;gt; attribute must be set to '''1..x''' for ''discrete'' channels for which a trivial averaging filter will be applied. The neutral of a discrete channel need to be halfway through the min and max values. Otherwise it won't be mapped properly by the filter. Note that averaging a channel gives the output an additional small delay.&lt;br /&gt;
&lt;br /&gt;
== Direction ==&lt;br /&gt;
&lt;br /&gt;
The following signs have been used in the radio configuration files distributed in &amp;lt;tt&amp;gt;conf/radios&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''ROLL''': The &amp;lt;tt&amp;gt;min&amp;lt;/tt&amp;gt; attribute value stands for the right position of the stick (turning right)&lt;br /&gt;
* '''PITCH''': The &amp;lt;tt&amp;gt;max&amp;lt;/tt&amp;gt; attribute value stands for the up position of the stick (pitching up)&lt;br /&gt;
&lt;br /&gt;
''' From &amp;quot;v3.9&amp;quot; on this has been changed to follow standard aerospace conventions:'''&lt;br /&gt;
* '''ROLL''': The &amp;lt;tt&amp;gt;max&amp;lt;/tt&amp;gt; attribute value stands for the right position of the roll stick (banking right)&lt;br /&gt;
* '''PITCH''': The &amp;lt;tt&amp;gt;max&amp;lt;/tt&amp;gt; attribute value stands for the &amp;quot;up&amp;quot; position of the pitch stick pulled towards you (pitching up)&lt;br /&gt;
* '''YAW''': The &amp;lt;tt&amp;gt;max&amp;lt;/tt&amp;gt; attribute value stands for the right position of the yaw stick (yawing clock-wise)&lt;br /&gt;
&lt;br /&gt;
=== Practical test ===&lt;br /&gt;
In the RC message:&lt;br /&gt;
* when the ROLL stick is pulled to the right (aircraft banks right), you should see a value close to -MAX_PPRZ (-9600) in the ROLL channel&lt;br /&gt;
* When the PITCH stick is pulled (aircraft pitches up), you should see a value close to MAX_PPRZ (9600) in the PITCH channel&lt;br /&gt;
&lt;br /&gt;
''' From &amp;quot;v3.9&amp;quot; on this has been changed to follow standard aerospace conventions:'''&lt;br /&gt;
* when the ROLL stick is pulled to the right (aircraft banks right), you should see a value close to MAX_PPRZ (9600) in the ROLL channel&lt;br /&gt;
* When the PITCH stick is pulled (aircraft pitches up), you should see a value close to MAX_PPRZ (9600) in the PITCH channel&lt;br /&gt;
* When the YAW stick is pulled to the right (aircraft yawing clock-wise), you should see a value close to MAX_PPRZ (9600) in the YAW channel&lt;br /&gt;
&lt;br /&gt;
This works with all kind of radios (PPM, USB, 2.4GHz)&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Below you find an example of a radio file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
-- Attributes of root (Radio) tag :&lt;br /&gt;
-- name: name of RC&lt;br /&gt;
-- min: min width of a pulse to be considered as a data pulse&lt;br /&gt;
-- max: max width of a pulse to be considered as a data pulse&lt;br /&gt;
-- sync: min width of a pulse to be considered as a synchro pulse&lt;br /&gt;
-- min, max and sync are expressed in micro-seconds&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
-- Attributes of channel tag :&lt;br /&gt;
-- ctl: name of the command on the transmitter - only for displaying&lt;br /&gt;
-- function: logical command&lt;br /&gt;
-- average: (boolean) channel filtered through several frames (for discrete commands)&lt;br /&gt;
-- min: minimum pulse length (micro-seconds)&lt;br /&gt;
-- max: maximum pulse length (micro-seconds)&lt;br /&gt;
-- neutral: neutral pulse length (micro-seconds)&lt;br /&gt;
Note: a command may be reversed by exchanging min and max values&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;radio name=&amp;quot;GraupnerMC20&amp;quot; data_min=&amp;quot;950&amp;quot; data_max=&amp;quot;2150&amp;quot; sync_min=&amp;quot;5000&amp;quot; sync_max=&amp;quot;15000&amp;quot; pulse_type=&amp;quot;NEGATIVE&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;A&amp;quot; function=&amp;quot;THROTTLE&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1100&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt; &amp;lt;!-- left stick up/down --&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;B&amp;quot; function=&amp;quot;ROLL&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;     &amp;lt;!-- right stick left/right --&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;C&amp;quot; function=&amp;quot;PITCH&amp;quot; min=&amp;quot;1900&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1100&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;    &amp;lt;!-- right stick up/down --&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;D&amp;quot; function=&amp;quot;YAW&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;	  &amp;lt;!-- left stick left/right--&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;E&amp;quot; function=&amp;quot;MODE&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;1&amp;quot;/&amp;gt;     &amp;lt;!-- left middle 3-pos switch --&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;F&amp;quot; function=&amp;quot;GAIN1&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;    &amp;lt;!-- left slider prop channel --&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;G&amp;quot; function=&amp;quot;GAIN2&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;0&amp;quot;/&amp;gt;    &amp;lt;!-- right slider prop channel --&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;H&amp;quot; function=&amp;quot;SWITCH1&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;1&amp;quot;/&amp;gt;  &amp;lt;!-- switch (channel 8) --&amp;gt;&lt;br /&gt;
  &amp;lt;channel ctl=&amp;quot;I&amp;quot; function=&amp;quot;UNUSED&amp;quot; min=&amp;quot;1100&amp;quot; neutral=&amp;quot;1500&amp;quot; max=&amp;quot;1900&amp;quot; average=&amp;quot;1&amp;quot;/&amp;gt;   &amp;lt;!-- channel 9 is transmitted but cannot be controlled --&amp;gt;&lt;br /&gt;
&amp;lt;/radio&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PPM input to output chain ==&lt;br /&gt;
The chain from ppm input to servo output has intermediate steps and roughly looks like this:&lt;br /&gt;
&lt;br /&gt;
ppm input --(radio.xml)--&amp;gt; ppm_pulses[] --(radio.xml)--&amp;gt; radio_control.values[] --([[Fixedwing_Configuration#Manual|rc_commands]])--&amp;gt; commands[] --([[Fixedwing_Configuration#Servos|command_laws,servos]])--&amp;gt; actuators_pwm_values[]  ppm out&lt;br /&gt;
&lt;br /&gt;
Written in parenthesis is where you configure how to transform one value into the other.&lt;br /&gt;
&lt;br /&gt;
So in a simple case without fancy mixing, e.g. looking at the roll command / aileron servo while in MANUAL mode:&lt;br /&gt;
#PPM sum signal is read and split into channels as specified in your radio xml file.&amp;lt;br/&amp;gt;It does some sanity checking on the pulse length and frame lenght according to the top attributes in that file.&amp;lt;br/&amp;gt;This is written to the ppm_pulses array, where you now have the length of the pulse in system ticks.&lt;br /&gt;
#Now these get converted to radio_control.values array according to the channels in your radio xml file.&amp;lt;br/&amp;gt;They get scaled to MAX_PPRZ (9600), meaning what you specified as max is 9600, neutral is 0, etc.&amp;lt;br/&amp;gt;radio_control.values[RADIO_ROLL] now has the value 9600 if the pulse width of that channels was &amp;quot;max&amp;quot;&lt;br /&gt;
#Mapping of RC commands to the actual commands as specified in rc_commands section.&amp;lt;br/&amp;gt;In your case simply copy radio_control.values[RADIO_ROLL] to commands[COMMAND_ROLL]&lt;br /&gt;
#Applying command_laws (mixing) to get the commands for each servo.&amp;lt;br/&amp;gt;Again just copying in your case...&lt;br /&gt;
#Scaling from commands with MAX_PPRZ scale to the actual pwm output signal according to the servos section.&lt;br /&gt;
&lt;br /&gt;
== Measuring the PPM time values ==&lt;br /&gt;
&lt;br /&gt;
[[Image:RC_Receiver_Timing_Diagram.jpg|thumb|R/C receiver timing diagram]]&lt;br /&gt;
&lt;br /&gt;
There are two common ways to measure the time characteristics of the PPM signal:&lt;br /&gt;
# Using an oscilloscope: easy to achieve with a high level digital scope with capture and measure facilities.&lt;br /&gt;
# Using the telemetry of the autopilot: the '''PPM''' message (defined in &amp;lt;tt&amp;gt;conf/messages.xml&amp;lt;/tt&amp;gt;) contains the sequence of a (recently) received PPM signal.&lt;br /&gt;
&lt;br /&gt;
With the default telemetry configuration file (&amp;lt;tt&amp;gt;conf/telemetry/default_fixedwing.xml&amp;lt;/tt&amp;gt;), this message is '''not''' sent in the '''default''' fbw telemetry mode (numbered 0).&lt;br /&gt;
&lt;br /&gt;
There are two ways to enable this message:&lt;br /&gt;
* Use the settings mechanism to change the FBW telemetry mode while the autopilot is already running:&amp;lt;br/&amp;gt;In the GCS: Settings -&amp;gt; telemetry -&amp;gt; tele_FBW -&amp;gt; set to debug (1)&lt;br /&gt;
* This mode can be permanently changed to '''debug''' (numbered 1) in the airframe file by setting the '''TELEMETRY_MODE_FBW''' constant in your firmware section: &lt;br /&gt;
  &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;define name=&amp;quot;TELEMETRY_MODE_FBW&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Since &amp;quot;v3.9&amp;quot; the values in the PPM message are in µs.'''&lt;br /&gt;
&lt;br /&gt;
Before &amp;quot;v3.9&amp;quot; the time unit used in this '''PPM''' message was hardware dependent:&lt;br /&gt;
* On the obsolete AVR hardware, 1 microsecond = 16 units (because the crystal is running at 16MHz)&lt;br /&gt;
* on the LPC hardware, 1 microsecond = 15 units (because the cristal is running at 12MHz)&lt;br /&gt;
*:(&amp;lt;tt&amp;gt;conf/autopilot/tiny.h&amp;lt;/tt&amp;gt;), the CPU clock is 5 times more, the peripheral bus is 4 times less, and the timer is not prescaled (&amp;lt;tt&amp;gt;sw/airborne/arch/lpc21/mcu_periph/sys_time_arch.h&amp;lt;/tt&amp;gt;) !!!)&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
If one has a good servo tester the output values at the receiver side can be measured&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=SuperbitRF&amp;diff=15763</id>
		<title>SuperbitRF</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=SuperbitRF&amp;diff=15763"/>
		<updated>2013-08-21T06:40:21Z</updated>

		<summary type="html">&lt;p&gt;Jkg: minor cleanup, wording, typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:tudelft_logo.jpg|left|150px|link=http://tudelft.nl/en/]]&lt;br /&gt;
[[File:SuperbitRF_usb_modem.jpg|300px|right]]&lt;br /&gt;
&lt;br /&gt;
== What is '''SuperbitRF'''? ==&lt;br /&gt;
SuperbitRF is a project to design our own datalink/radio receiver. The ultimate goal is to get the receiver to work with our own datalink modem and also normal DSM2/DSMX transmitters. However, the main focus is to get a very small datalink which will be integrated in the autopilot PCB.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
=== Superbit CYRF ===&lt;br /&gt;
[[Image:Cyrf_v1_0_r1_back.jpg|300px]]&lt;br /&gt;
[[Image:Cyrf_v1_0_r1_front.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
=== Superbit USBRF ===&lt;br /&gt;
[[Image:Usbrf_v1_0_back.jpg|300px]]&lt;br /&gt;
[[Image:Usbrf_v1_0_front.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
In general you will have either a USB datalink modem or a DSM2/DSMX transmitter which can be bound to the datalink/radio receiver on the autopilot. During the binding process, the receiver will know if it is binding to a USB datalink (in DSMX or DSM2 mode), DSM2 transmitter or a DSMX transmitter. After binding, the receiver tries to keep in sync with the USB datalink or transmitter and will forward the packets received to either the paparazzi datalink or the radio control.&lt;br /&gt;
&lt;br /&gt;
The SuperbitRF USB modem uses the normal DSM2/DSMX protocol, which can be chosen inside the firmware. For more information on how the DSM2 and the DSMX protocol works, see [[DSM]].&lt;br /&gt;
&lt;br /&gt;
== The source code ==&lt;br /&gt;
The firmware for the SuperbitRF USB modem is open source and can be found at [https://github.com/fvantienen/superbitrf-firmware Github SuperbitRF Firmware].&lt;br /&gt;
As of this writing (Aug 2013), the source code for the datalink receiver (which will run on the autopilot) is not finished yet.&lt;br /&gt;
&lt;br /&gt;
== SuperbitRF in depth ==&lt;br /&gt;
The SuperbitRF firmware for the USB dongle consists of 3 different build targets: Transmitter, Man In The Middle (MITM), and Receiver. &lt;br /&gt;
* The Transmitter (used for GCS) target is capable of sending Paparazzi joystick commands in DSM2 or DSMX to normal DSM2/DSMX receivers and the SuperbitRF receiver. It is also capable of receiving downlink messages and sending uplink messages to a SuperbitRF module. &lt;br /&gt;
* The MITM target (used for GCS) is only capable of receiving downlink messages and sending uplink messages to a SuperbitRF module, but this is possible in combination with a normal DSM2 or DSMX transmitter. &lt;br /&gt;
* The Receiver target (used for airborne) is capable of receiving DSM2 and DSMX commands from a normal DSM2/DSMX transmitter or the SuperbitRF transmitter, and is also capable of transmitting downlink messages and receiving uplink messages from a SuperbitRF module.&lt;br /&gt;
The SuperbitRF always takes PPRZ messages as input and also always outputs PPRZ messages.&lt;br /&gt;
&lt;br /&gt;
Next to the firmware of the SuperbitRF USB dongle we also have a integration of only the CYRF6936 chip inside Paparazzi. This part can do the exact same as the Receiver target from the SuperbitRF dongle, except that this time all the processing is done directly inside Paparazzi.&lt;br /&gt;
&lt;br /&gt;
=== Transmitter USB Dongle ===&lt;br /&gt;
This was functional in the beginning, but now probably doesn't work anymore. It doesn't have the normal DSM2/DSMX transmission part in it yet and only has the PPRZ uplink and downlink.&lt;br /&gt;
&lt;br /&gt;
=== MITM USB Dongle ===&lt;br /&gt;
This is functional now with DSMX, but there are still some timing problems. The up- and downlink works and keep workings when the transmitter is shut down. When the transmitter is down the receiver (the USB dongle on the airframe or the integrated cyrf code in Paparazzi) is capable of sending downlink messages at a higher rate because the receiver timing of the syncing mode is used to transmit and receive packets to the MITM. When the transmitter is on the receiver is in transfer mode and the transmitter sets the timing for the receiver and thus also for the MITM. So the timing between the MITM and the receiver is very hard to tune, because the MITM doesn't know when the receiver is in transfer mode or not, and each transmitter is sending at a different timing. This is why getting the timing right is so difficult.&lt;br /&gt;
&lt;br /&gt;
=== Receiver USB Dongle ===&lt;br /&gt;
This part receives the DSM2 and DSMX packets, but doesn't receive the data packets from the SuperbitRF dongle yet. It also doesn't parse the DSM2 and DSMX packets to normal PPRZ packets yet. This is mainly used for debugging a transmitter to see what the timing is and see if it is properly working. This is also the basis for the integrated CYRF6936 receiver inside paparazzi.&lt;br /&gt;
&lt;br /&gt;
=== SuperbitRF receiver software (inside Paparazzi) ===&lt;br /&gt;
This consists of two parts, the radio_control subsystem and the telemetry subsystem. The radio_control subsystem works independently from the telemetry subsystem, but uses the same code. The telemetry subsystem isn't tested without the radio_control subsystem, but it works when the transmitter is not sending (not in a optimised way because it is also continuously synchronising to get back the radio control signal). But for now everything seems to work in DSMX mode(because DSM2 still has some timing issues and is harder to debug) in combination with the MITM usb dongle.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
For now I only have a small explanation on how to bind the MITM, the integrated CYRF6936 paparazzi and a normal DSMX or DSM2 transmitter with each other, later I will add more information when it is working.&lt;br /&gt;
&lt;br /&gt;
To MITM USB dongle automatically starts in binding mode, so you don't need to do anything besides plugging it in. When you have done that you start your autopilot with the bind plug, like a normal Spektrum receiver. Both the MITM and the autopilot are now in binding mode and waiting for the transmitter to send binding packets. Next, power on your transmitter in binding mode. When the MITM is done binding the yellow LED will go on. When the autopilot is done binding you don't see anything until it's synchronised with the transmitter, then the normal RC led will go on. It doesn't matter if you bind the autopilot and the MITM not at the same time, it only matters that they are bound to the exact same transmitter. When the binding is done everything should work!&lt;br /&gt;
&lt;br /&gt;
== Progress ==&lt;br /&gt;
* 19/07/2013 - We now have the MITM working in combination with a normal transmitter in DSMX mode (DSM2 mode still has some problems) and also have the receiver part inside Paparazzi working. The transmitter and the receiver target of the superbitRF aren't fully functional yet, but the main focus was the MITM target. There are still some strange things happening in the timing, but we need to look more into the timings of different RC transmitters because that affects the MITM timing.&lt;br /&gt;
* 09/07/2013 - Also got the downlink working!&lt;br /&gt;
* 03/07/2013 - Got a fully working RC!&lt;br /&gt;
* 02/07/2013 - After some simple logic analysing we figured out the faults and now we have a working SPI connection between the superbitRF and the Lisa M. Already implemented the binding procedure inside Paparazzi and we are receiving packets, but we didn't implement the handling of the binding packet.&lt;br /&gt;
* 01/07/2013 - We connected a cyrf6936 chip directly to the spi bus of a Lisa M and are trying to receive the MFG id, manufacturer id, from the cyrf6936. Having some problems with that so we are going to sniff the spi connection and the reset pin with a logic analyser.&lt;br /&gt;
* 28/06/2013 - We sniffed a normal dsm2 receiver spi bus connection to the cyrf6936 chip and found the errors in our own protocol. We are now able to bind to a normal DSM2 and DSMX  transmitter  trough DSM2 and receive the channels. The next step is to implement DSMX and make our own datalink work together with a normal transmitter. (We used saleae logic with a simple php script to analyze the cyrf6936 spi connection)&lt;br /&gt;
* 20/06/2013 - Hacked the SITL(NPS) of paparazzi to enable a hardware datalink and tested the Quad Lisa M simulator with normal telemetry. Everything worked great, tweaked some of the timings of the receiver and transmitter, and we now have a reliable datalink!&lt;br /&gt;
* 19/06/2013 - Made the datalink more reliable, and both the receiver and transmitter know when a packet is lost and resends it. Als did manage to get a simple datalink with an AR.Drone 2.&lt;br /&gt;
* 18/06/2013 - We currently have a datalink working between two SuperbitRF usb modems. It isn't that reliable yet, but we are working on improving it. We can already bind to a normal DSM2/DSMX transmitter, but can't get the syncing to work. We are also working on testing the datalink transfer rate and testing how paparazzi handles the packet loss you have with a unreliable radio datalink.&lt;br /&gt;
* 11/06/2013 - Received the SuperbitRF usb modems and did some simple testing with blinking light and receiving the radio chip ID.&lt;br /&gt;
&lt;br /&gt;
== The contributors ==&lt;br /&gt;
* Piotr (working on the hardware)&lt;br /&gt;
* Bart Remes&lt;br /&gt;
* Freek van Tienen (working on the software)&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/VirtualBox&amp;diff=15703</id>
		<title>Installation/VirtualBox</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/VirtualBox&amp;diff=15703"/>
		<updated>2013-08-14T00:59:55Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added troubleshooting section for enabling virtualization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Running through a virtual machine (in this case [http://www.virtualbox.org Virtualbox]) allows you to use Paparazzi from many different operating systems, including Windows. It is also good way to 'get your feet wet' with Paparazzi without having to get things up and running yourself.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
#Download the Virtualbox installer for your host OS from https://www.virtualbox.org/wiki/Downloads and install.&lt;br /&gt;
##If you plan to program autopilots, also download the VirtualBox Extension Pack on the same page. This gives the virtual Linux machine access to your computer's USB ports.&lt;br /&gt;
#Download the Paparazzi virtual machine hard disk image from [http://google.com a secret location]. Decompress the file to a convenient place - a good place is a folder called 'VirtualBox VMs' in your user folder (Linux, MacOS) or the My Documents folder (Windows).&lt;br /&gt;
#Open Virtualbox&lt;br /&gt;
#To enable USB support, install the VirtualBox Extension Pack by going to File-&amp;gt;Preferences and clicking Extensions. Hit the 'add package' button widget (diamond w yellow triangle) on the right and choose the Extension Pack file. Click OK to close settings.&lt;br /&gt;
#Choose 'Add..' from the Machine menu and choose the file 'Ubuntu 12 64bit.vbox' from inside the Ubuntu 12 64bit folder you downloaded in step 3.&lt;br /&gt;
#A new VM should appear in the left column of the VM manager.&lt;br /&gt;
#Hit the big green start arrow and it should start booting. If you are running Virtualbox in Windows, MAKE SURE TO READ THE POPUPS that tell you about which key lets you jump OUT of the virtual machine - otherwise you can be 'stuck' inside since Windows hides Virtualbox the menu bar.&lt;br /&gt;
##In Windows 7, the default host key to 'escape' from Linux is the right CTRL key, so you press for example rctrl-C to toggle scaled view on/off, rctrl-F to toggle fullscreen, etc.&lt;br /&gt;
#For now you don't want to be in either of those modes since it hides the Virtualbox menu bar - so if it says its entering scaled mode, follow the directions to exit it. You should now see a grey menubar along the top that has Machine, View, Devices, and Help menus.&lt;br /&gt;
#Once the machine is booted up, log in with the username 'pprz' and password 'password'. &lt;br /&gt;
#Once at the desktop, choose 'Install Guest Additions' from the Devices menu. Note that this is a host OS menu, not the virtual Linux OS. If you can't find this menubar, see the steps above for toggling the view.&lt;br /&gt;
#Click Run on the box that comes up to install guest additions - this is driver software that allows the Linux install run faster on your specific machine.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
#(Linux/Windows host OS) If you receive an error stating that VT-x/AMD-V hardware acceleration is not operational, you may need to turn on those feature(s) in your computer's BIOS. Refer to the manual for your motherboard and look for directions relating to virtualization. For example, here is the setting in the [http://i.stack.imgur.com/5x3YW.png Award BIOS].&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/VirtualBox&amp;diff=15702</id>
		<title>Installation/VirtualBox</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/VirtualBox&amp;diff=15702"/>
		<updated>2013-08-14T00:45:49Z</updated>

		<summary type="html">&lt;p&gt;Jkg: reformatted/cleaned up some&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Running through a virtual machine (in this case [http://www.virtualbox.org Virtualbox]) allows you to use Paparazzi from many different operating systems, including Windows. It is also good way to 'get your feet wet' with Paparazzi without having to get things up and running yourself.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
#Download the Virtualbox installer for your host OS from https://www.virtualbox.org/wiki/Downloads and install.&lt;br /&gt;
##If you plan to program autopilots, also download the VirtualBox Extension Pack on the same page. This gives the virtual Linux machine access to your computer's USB ports.&lt;br /&gt;
#Download the Paparazzi virtual machine hard disk image from [http://google.com a secret location]. Decompress the file to a convenient place - a good place is a folder called 'VirtualBox VMs' in your user folder (Linux, MacOS) or the My Documents folder (Windows).&lt;br /&gt;
#Open Virtualbox&lt;br /&gt;
#To enable USB support, install the VirtualBox Extension Pack by going to File-&amp;gt;Preferences and clicking Extensions. Hit the 'add package' button widget (diamond w yellow triangle) on the right and choose the Extension Pack file. Click OK to close settings.&lt;br /&gt;
#Choose 'Add..' from the Machine menu and choose the file 'Ubuntu 12 64bit.vbox' from inside the Ubuntu 12 64bit folder you downloaded in step 3.&lt;br /&gt;
#A new VM should appear in the left column of the VM manager.&lt;br /&gt;
#Hit the big green start arrow and it should start booting. If you are running Virtualbox in Windows, MAKE SURE TO READ THE POPUPS that tell you about which key lets you jump OUT of the virtual machine - otherwise you can be 'stuck' inside since Windows hides Virtualbox the menu bar.&lt;br /&gt;
##In Windows 7, the default host key to 'escape' from Linux is the right CTRL key, so you press for example rctrl-C to toggle scaled view on/off, rctrl-F to toggle fullscreen, etc.&lt;br /&gt;
#For now you don't want to be in either of those modes since it hides the Virtualbox menu bar - so if it says its entering scaled mode, follow the directions to exit it. You should now see a grey menubar along the top that has Machine, View, Devices, and Help menus.&lt;br /&gt;
#Once the machine is booted up, log in with the username 'pprz' and password 'password'. &lt;br /&gt;
#Once at the desktop, choose 'Install Guest Additions' from the Devices menu. Note that this is a host OS menu, not the virtual Linux OS. If you can't find this menubar, see the steps above for toggling the view.&lt;br /&gt;
#Click Run on the box that comes up to install guest additions - this is driver software that allows the Linux install run faster on your specific machine.&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Installation/VirtualBox&amp;diff=15701</id>
		<title>Installation/VirtualBox</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Installation/VirtualBox&amp;diff=15701"/>
		<updated>2013-08-14T00:25:37Z</updated>

		<summary type="html">&lt;p&gt;Jkg: created page and added first pass directions for installation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Running through a virtual machine (in this case [http://www.virtualbox.org Virtualbox]) allows you to use Paparazzi from many different operating systems, including Windows. It is also good way to 'get your feet wet' with Paparazzi without having to get things up and running yourself.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download the Virtualbox installer for your host OS from https://www.virtualbox.org/wiki/Downloads and install.&lt;br /&gt;
&amp;lt;li&amp;gt;If you plan to program autopilots, you'll also need to download the VirtualBox Extension Pack on the same page.&lt;br /&gt;
&amp;lt;li&amp;gt;Download the virtual machine hard disk image from [http://google.com a secret location]. Decompress the file to a convenient place - a good place is a folder called 'VirtualBox VMs' in your user folder (Linux, MacOS) or the My Documents folder (Windows).&lt;br /&gt;
&amp;lt;li&amp;gt;Open Virtualbox, and install the extension pack by going to File-&amp;gt;Preferences and clicking Extensions. Hit the 'add package' button widget (diamond w yellow triangle) on the right and choose the Extension Pack file. Click OK to close settings.&lt;br /&gt;
&amp;lt;li&amp;gt;Choose 'Add..' from the Machine menu and choose the file 'Ubuntu 12 64bit.vbox' from inside the Ubuntu 12 64bit folder you downloaded in step 3.&lt;br /&gt;
&amp;lt;li&amp;gt;A new VM should appear in the left column of the VM manager.&lt;br /&gt;
&amp;lt;li&amp;gt;Hit the big green start arrow and it should start booting. If you are running Virtualbox in Windows, MAKE SURE TO READ THE POPUP WINDOWS that come up telling you about which key is the magic one that lets you jump OUT of the VM - otherwise you can be 'stuck' inside the virtual Linux machine since Windows likes to hide the menu bar.&lt;br /&gt;
&amp;lt;li&amp;gt;In Windows 7, the default host key to 'escape' from Linux is the right CTRL key, so you press for example rctrl-C to toggle scaled view on/off, rctrl-F to toggle fullscreen, etc.&lt;br /&gt;
&amp;lt;li&amp;gt;for now you don't want to be in either of those modes since it hides the Virtualbox menu bar - so if it says its entering scaled mode or something just follow the directions to exit it, so you see a grey menubar along the top that has Machine/View/Devices/Help&lt;br /&gt;
&amp;lt;li&amp;gt;if not try hitting the keys I mentioned above&lt;br /&gt;
&amp;lt;li&amp;gt;Once the machine is booted up, log in with the username 'pprz' and password 'password'. You are now running Linux inside your OS!&lt;br /&gt;
&amp;lt;li&amp;gt; Once at the desktop, choose 'Install Guest Additions' from the Devices menu. Note that this is a menu from your host OS, not the Linux OS. If you can't find this menubar, see the steps above for toggling the view.&lt;br /&gt;
&amp;lt;li&amp;gt;Run on the box that comes up to install guest additions - this is software that helps the Linux install run faster on your specific machine.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Subsystem/ahrs&amp;diff=15457</id>
		<title>Subsystem/ahrs</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Subsystem/ahrs&amp;diff=15457"/>
		<updated>2013-07-02T06:26:01Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added wolfram alpha link for computing local mag field and made it clearer where to put the resulting values in the airframe file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages hideprefix=always&amp;gt;Subsystems&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
== AHRS subsystem ==&lt;br /&gt;
The '''A'''ttitude and '''H'''eading '''R'''eference '''S'''ystem subsystem specifies which attitude estimation filter you are using.&lt;br /&gt;
&lt;br /&gt;
Currently possible AHRS subsystem types are&lt;br /&gt;
* ''[[Subsystem/ahrs#Complementary_Quaternion_.28fixed_point.29|int_cmpl_quat]]''&lt;br /&gt;
* ''[[Subsystem/ahrs#Complementary_Quaternion.2FRotation_Matrix_.28floating_point.29|float_cmpl]]''&lt;br /&gt;
* ''[[Subsystem/ahrs#DCM_.28floating_point.29|float_dcm]]''&lt;br /&gt;
* ''[[Subsystem/ahrs#Complementary_Euler_.28fixed_point.29|int_cmpl_euler]]''&lt;br /&gt;
* ''[[Subsystem/ahrs#Infrared|infrared]]''&lt;br /&gt;
&lt;br /&gt;
e.g. for the latest complementary filter:&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;fixedwing or rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;ahrs&amp;quot; type=&amp;quot;int_cmpl_quat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
There is a test program ( sw/airborne/test/ahrs/compare_ahrs.py ) to compare different AHRS implementations on simple test cases.&lt;br /&gt;
&lt;br /&gt;
'''Please also see [https://github.com/paparazzi/paparazzi/issues/93 issue 93] about proper handling of BODY_TO_IMU in all AHRS algorithms.'''&lt;br /&gt;
&lt;br /&gt;
=== Complementary Quaternion (fixed point) ===&lt;br /&gt;
* Estimates the gyro bias.&lt;br /&gt;
* By default uses magnetometer for heading.&lt;br /&gt;
* In v3.9 and later:&lt;br /&gt;
** Compensation of centrifugal force via GPS speed (to fly in circles with a fixedwing).&amp;lt;br/&amp;gt;Enabled with AHRS_GRAVITY_UPDATE_COORDINATED_TURN which is set by default for a fixedwing firmware.&lt;br /&gt;
** GPS based heading estimation: https://github.com/paparazzi/paparazzi/issues/130&lt;br /&gt;
&lt;br /&gt;
Other flags of interest are:&lt;br /&gt;
*AHRS_PROPAGATE_LOW_PASS_RATES : apply a low pass filter on rotational velocity&lt;br /&gt;
*AHRS_MAG_UPDATE_ALL_AXES : '''available since v3.9''' use mag to also update roll/pitch and not only yaw (not recommended in most cases)&lt;br /&gt;
*AHRS_MAG_UPDATE_YAW_ONLY : '''removed in v3.9, default behaviour since''' only update the yaw instead of all axes &lt;br /&gt;
&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;fixedwing or rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;ahrs&amp;quot; type=&amp;quot;int_cmpl_quat&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;section name=&amp;quot;AHRS&amp;quot; prefix=&amp;quot;AHRS_&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_X&amp;quot; value=&amp;quot; 0.51562740288882&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_Y&amp;quot; value=&amp;quot;-0.05707735220832&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_Z&amp;quot; value=&amp;quot; 0.85490967783446&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Also see the [[Subsystem/ahrs#Local_Magnetic_Field|Local Magnetic Field]] section.&lt;br /&gt;
&lt;br /&gt;
=== Complementary Quaternion/Rotation Matrix (floating point) ===&lt;br /&gt;
* Estimates the gyro bias.&lt;br /&gt;
* By default uses magnetometer for heading.&lt;br /&gt;
* You need to define either ''AHRS_PROPAGATE_RMAT'' or ''AHRS_PROPAGATE_QUAT'' (select if the propagation is done in rotation matrix or quaternion representation).&lt;br /&gt;
* In v3.9 and later:&lt;br /&gt;
** Compensation of centrifugal force via GPS speed (to fly in circles with a fixedwing).&amp;lt;br/&amp;gt;Enabled with AHRS_GRAVITY_UPDATE_COORDINATED_TURN which is set by default for a fixedwing firmware.&lt;br /&gt;
** GPS based heading estimation: https://github.com/paparazzi/paparazzi/issues/130&lt;br /&gt;
Other flags of interest are:&lt;br /&gt;
* AHRS_PROPAGATE_LOW_PASS_RATES : apply a low pass filter on rotational velocity&lt;br /&gt;
* AHRS_MAG_UPDATE_ALL_AXES : use mag to also update roll/pitch and not only yaw (not recommended in most cases)&lt;br /&gt;
* AHRS_GRAVITY_UPDATE_NORM_HEURISTIC: lower the gain of the gravity update based on a acceleration norm heuristic (e.g. good for bungee takeoff)&lt;br /&gt;
&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;rotorcraft or fixedwing&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;ahrs&amp;quot; type=&amp;quot;float_cmpl_rmat&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;define name=&amp;quot;AHRS_PROPAGATE_QUAT&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/subsystem&amp;gt;&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;section name=&amp;quot;AHRS&amp;quot; prefix=&amp;quot;AHRS_&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_X&amp;quot; value=&amp;quot; 0.51562740288882&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_Y&amp;quot; value=&amp;quot;-0.05707735220832&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_Z&amp;quot; value=&amp;quot; 0.85490967783446&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Also see the [[Subsystem/ahrs#Local_Magnetic_Field|Local Magnetic Field]] section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DCM (floating point) ===&lt;br /&gt;
* No direct gyro bias estimation, but also compensates for attitude drift.&lt;br /&gt;
* Uses GPS speed for heading.&lt;br /&gt;
* Compensation of centrifugal force via GPS speed (to fly in circles with a fixedwing).&lt;br /&gt;
* '''Careful, it doesn't handle all BODY_TO_IMU rotations (mounting positions) correctly!'''&lt;br /&gt;
&lt;br /&gt;
The algorithm was developed by William Premerlani and Paul Bizard. The theory can be found here: [[Media:DCMDraft2.pdf|DCMDraft2.pdf]]  The algorithm is also used in the AHRS systems of the AdruIMU.&lt;br /&gt;
The name DCM for the algorithm is really a misnomer, as that just means that the orientation is represented as a '''D'''irection'''C'''osine'''M'''atrix (rotation matrix). But since people already know it under that name, we kept it.&lt;br /&gt;
&lt;br /&gt;
Other flags of interest are:&lt;br /&gt;
*USE_MAGNETOMETER : use magnetometer to update yaw (untested ? The magnetometer code has to be improved, since ferromagnetic materials affect the magnetic field. This is currently not implemented.)&lt;br /&gt;
&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;rotorcraft or fixedwing&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;ahrs&amp;quot; type=&amp;quot;float_dcm&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Complementary Euler (fixed point) ===&lt;br /&gt;
* Not recommended for fixedwings, as this filter doesn't compensate for centrifugal force when flying turns.&lt;br /&gt;
* Magnetometer is always only used for heading (yaw).&lt;br /&gt;
* '''Does not handle the accel and mag updates correctly if BODY_TO_IMU is used for more than just adjustment by a few degrees.'''&lt;br /&gt;
* In general, rather use ''[[Subsystem/ahrs#Complementary_Quaternion_.28fixed_point.29|int_cmpl_quat]]''&lt;br /&gt;
&lt;br /&gt;
Optional flags/defines are:&lt;br /&gt;
* FACE_REINJ_1 : defaults to 1024&lt;br /&gt;
* IMU_MAG_OFFSET : offset to subtract from the heading calculated by the magnetometer&lt;br /&gt;
* USE_NOISE_FILTER : apply a simple filter on the rate and accel inputs&lt;br /&gt;
* USE_NOISE_CUT : cut rate input at 1 rad/s and accel input at 20m/s²&lt;br /&gt;
&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;fixedwing or rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;ahrs&amp;quot; type=&amp;quot;int_cmpl_euler&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;section name=&amp;quot;MISC&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;FACE_REINJ_1&amp;quot; value=&amp;quot;1024&amp;quot;/&amp;gt; &amp;lt;!-- optional, defaults to 1024 --&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Infrared ===&lt;br /&gt;
For use with infrared sensors that detect aircraft attitude and the [[Module/infrared| infrared module]].&lt;br /&gt;
&lt;br /&gt;
== Local Magnetic Field ==&lt;br /&gt;
If you are using a magnetometer, calculate the normalised local magnetic field by inserting your location coordinates [http://www.ngdc.noaa.gov/geomag-web/#igrfwmm here]and clicking calculate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200px heigths=300px&amp;gt;&lt;br /&gt;
Image:Noaa_mag_data.png|Screenshot of noaa page.&lt;br /&gt;
Image:Normalised_mag_fields.png|Screenshot of scilab page.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the north(x), east(y), and vertical(z) component values into scilab and execute &amp;quot;X/norm(X)&amp;quot; or run this in ipython:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
from scipy import *&lt;br /&gt;
from numpy.linalg import norm&lt;br /&gt;
x = array([20875.1, 8480.2, -51279.8])&lt;br /&gt;
x/norm(x)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or enter this into [http://wolframalpha.com Wolfram Alpha]:&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
{20875.1, 8480.2, -51279.8}/Norm[{20875.1, 8480.2, -51279.8}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Category:User_Documentation]] [[Category:Subsystems]]&lt;br /&gt;
&lt;br /&gt;
Lastly, enter the results into your airframe file as H_X, H_Y, and H_Z:&lt;br /&gt;
&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;section name=&amp;quot;AHRS&amp;quot; prefix=&amp;quot;AHRS_&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_X&amp;quot; value=&amp;quot;0.372692&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_Y&amp;quot; value=&amp;quot;0.151401&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;H_Z&amp;quot; value=&amp;quot;-0.915521&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=AspirinIMU&amp;diff=15452</id>
		<title>AspirinIMU</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=AspirinIMU&amp;diff=15452"/>
		<updated>2013-06-25T18:25:05Z</updated>

		<summary type="html">&lt;p&gt;Jkg: fixed url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; width: 45%; overflow: hidden&amp;quot;&amp;gt;[[Image:Aspirin_2.1_imu_front.jpg|right|200px|Aspirin V2.1 top view]]&amp;lt;/div&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aspirin IMU ==&lt;br /&gt;
&lt;br /&gt;
The next generation flat multi degree of freedom inertial measurement unit. It uses digital 3-axis sensors which allow for a very small size and price. Other features include onboard voltage regulators, EEPROM for storing calibration data and extra sensors such as a barometer.&lt;br /&gt;
&lt;br /&gt;
== Hardware Revision History ==&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
!''Version #''!!''Release Date''!!''Release Notes''&lt;br /&gt;
|-&lt;br /&gt;
|v2.2(current)||09/2012||2nd Gen Revision&lt;br /&gt;
|-&lt;br /&gt;
|v2.1r1||08/2012||2nd Gen Minor Revision&lt;br /&gt;
|-&lt;br /&gt;
|v2.1||03/2012||2nd Gen Production Release&lt;br /&gt;
|-&lt;br /&gt;
|v2.0||11/2011||2nd Gen Prototype&lt;br /&gt;
|-&lt;br /&gt;
|v1.5||04/2011||Updated Production Release&lt;br /&gt;
|-&lt;br /&gt;
|v1.4||03/2011||Prototype Update&lt;br /&gt;
|-&lt;br /&gt;
|v1.3||08/2010||Initial Production Release&lt;br /&gt;
|-&lt;br /&gt;
|v1.2||07/2010||Prototype Update&lt;br /&gt;
|-&lt;br /&gt;
|v1.1||07/2010||Prototype Update&lt;br /&gt;
|-&lt;br /&gt;
|v1.0||07/2010||Initial Prototype&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* 3-axis accelerometer&lt;br /&gt;
* 3-axis gyroscope&lt;br /&gt;
* 3-axis magnetometer&lt;br /&gt;
* Onboard voltage regulation&lt;br /&gt;
* Onboard I2C EEPROM&lt;br /&gt;
* Onboard barometer (''v2.1'')&lt;br /&gt;
* Standard footprint across versions&lt;br /&gt;
* Single PCB flat form-factor&lt;br /&gt;
* Fits directly onto [[Lisa/M]], carriers for [[Booz]] and [[Lisa/L]], or for [[Autopilots|LPC21xx]] integration&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Aspirin Feature Matrix'''&lt;br /&gt;
!width=&amp;quot;6%&amp;quot;|''Version''!!width=&amp;quot;10%&amp;quot;|''Accelerometer''!!width=&amp;quot;10%&amp;quot;|''Gyroscope''!!width=&amp;quot;10%&amp;quot;|''Magnetometer''!!width=&amp;quot;10%&amp;quot;|''Barometer''!!width=&amp;quot;15%&amp;quot;|''Regulators''!!width=&amp;quot;10%&amp;quot;|''EEPROM''!!''Comments''&lt;br /&gt;
|-&lt;br /&gt;
|v2.2||MPU-6000||MPU-6000||HMC5883||MS5611||1x 3.3V (LP2992)||yes||MS5611 is connected directly to the SPI bus&lt;br /&gt;
|-&lt;br /&gt;
|v2.1||MPU-6000||MPU-6000||HMC5883||MS5611||1x 3.3V (LP2992)||yes||MS5611 is connected to the aux I2C of the MPU6000&lt;br /&gt;
|-&lt;br /&gt;
|v2.0||MPU-6000||MPU-6000||HMC5883||none||1x 3.3V (LP2992)||yes||&lt;br /&gt;
|-&lt;br /&gt;
|v1.5||ADXL345||IMU-3000||HMC5883||none||2x 3.3V (LP2992)||yes||&lt;br /&gt;
|-&lt;br /&gt;
|v1.4||ADXL345||IMU-3000||HMC5883||none||2x 3.3V (LP2992)||yes||&lt;br /&gt;
|-&lt;br /&gt;
|v1.3||ADXL345||ITG-3200||HMC5843||none||2x 3.3V (LP2992)||yes||&lt;br /&gt;
|-&lt;br /&gt;
|v1.2||ADXL345||ITG-3200||HMC5843||none||2x 3.3V (LP2992)||yes||&lt;br /&gt;
|-&lt;br /&gt;
|v1.1||ADXL345||ITG-3200||HMC5843||none||2x 3.3V (LP2992)||yes||&lt;br /&gt;
|-&lt;br /&gt;
|v1.0||ADXL345||ITG-3200||HMC5843||none||2x 3.3V (LP2992)||yes||Also has SC18IS600 SPI-I2C interface&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Aspirin 2.1 comes in several population versions. The current version available at http://transition-robotics.com has the MPU-6000, HMC5843, and MS5611-01BA03 mounted. You can find the list of fitted sensors on Aspirin 2.1 in the eeprom block 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=170px heights=120px&amp;gt;&lt;br /&gt;
Image:Aspirin imu front.jpg|Aspirin V1.3 IMU front&lt;br /&gt;
&amp;lt;!--Image:Aspirin imu front with scale.jpg|Aspirin IMU front with scale--&amp;gt;&lt;br /&gt;
Image:Aspirin imu back.jpg|Aspirin V1.3 IMU back&lt;br /&gt;
Image:Aspirin imu on carrier.JPG|Aspirin V1.3 IMU on [[Lisa/L]] compatible carrier board&lt;br /&gt;
Image:LisaL_Aspirin_Flat_Carrier.jpg|Aspirin flat carrier board for [[Lisa/L]] (without IMU mounted)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=220px heights=150px&amp;gt;&lt;br /&gt;
Image:Aspirin_2.1_bottom.jpg|Aspirin IMU 2.1 bottom side&lt;br /&gt;
Image:Aspirin_2.1_top.jpg|Aspirin IMU 2.1 top side&lt;br /&gt;
Image:Aspirin_2.1_nobaro_top.jpg|Aspirin IMU 2.1 top side no barometer mounted&lt;br /&gt;
Image:Aspirin_2.1_nomag_nobaro_top.jpg|Aspirin IMU 2.1 top side no barometer and no magnetometer mounted&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
&lt;br /&gt;
Note that Aspirin uses a standard footprint and pinout across all versions, with certain exceptions. The chip select (CS) and interrupt (Int) pins are not always assigned to the same devices. A good example is with the introduction of the MPU-6000 device. Check the schematics for details.&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' When mounting Aspirin on Lisa/M note that the pin labeled GND on Aspirin (in the right upper corner on the following picture) is connected on Lisa/M to GYRO_SS. To prevent a software error induced shorting of the Lisa/M GYRO_SS pin to ground, remove the castellation or remove the connection on that pad.&lt;br /&gt;
&lt;br /&gt;
In the v2.1r1 versions of Aspirin (&amp;quot;R1&amp;quot; silkscreened onto PCB) the right upper GND pad was changed to Not Connected, (marked RESV in the below image), resolving the issue.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aspirin IMU documented.jpg|300px|Aspirin IMU with documented IO connections.]]&lt;br /&gt;
[[Image:Aspirin_booz_carrier_legend.jpg|300px|Aspirin IMU on booz/breakout carrier with documented IO connections.]]&lt;br /&gt;
[[Image:Aspirin_flat_carrier_legend.jpg|300px|Aspirin IMU on flat carrier with documented IO connections.]]&lt;br /&gt;
&lt;br /&gt;
Note that the 12-pin connector pinout of the Booz/breakout carrier (center) is reversed with respect to the Lisa/L flat carrier (right). This is because the Booz carrier mounts to Lisa/L with the Aspirin underneath the carrier (e.g., Z axis pointing toward Lisa/L), and the flat carrier mounts to Lisa/L with the Aspirin on top (e.g., Z axis pointing away from Lisa/L).&lt;br /&gt;
&lt;br /&gt;
== Block Diagrams ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=300px heights=300px&amp;gt;&lt;br /&gt;
Image:Aspirin-1_x-stm32-block_diagram.png|Aspirin 1.x to STM32 protocol connections&lt;br /&gt;
Image:Aspirin-2_x-stm32-slave_i2c-block_diagram.png|Aspirin 2.x to STM32 default protocol connections (MPU-6000 slave I2C)&lt;br /&gt;
Image:Aspirin-2_x-stm32-direct_i2c-block_diagram.png|Aspirin 2.x to STM32 alternative protocol connections (STM32 direct I2C)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
&lt;br /&gt;
Schematics are available under {{CC-BY-SA-3.0}} license. For additional intermediate schematics see [[AspirinIMU#Downloads|Downloads]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200px heights=137px&amp;gt;&lt;br /&gt;
Image:Aspirin_imu_schematic_V1_3.png|Aspirin IMU V1.3 schematic&lt;br /&gt;
Image:Aspirin_imu_schematic_V1_5.png|Aspirin IMU V1.5 schematic&lt;br /&gt;
Image:Aspirin_imu_schematic_V2_1.png|Aspirin IMU V2.1 schematic&lt;br /&gt;
Image:Aspirin_imu_schematic_V2_2.png|Aspirin IMU V2.2 schematic&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drivers and Support ==&lt;br /&gt;
&lt;br /&gt;
Please see the [[Subsystem/imu|IMU subsystem]] page for details on configuring Paparazzi for using an Aspirin IMU.&lt;br /&gt;
&lt;br /&gt;
The drivers for this IMU are available in the [https://github.com/paparazzi/paparazzi/blob/master/sw/airborne/subsystems/imu/imu_aspirin.c Paparazzi GitHub repository].&lt;br /&gt;
&lt;br /&gt;
== PCB and assembled boards suppliers ==&lt;br /&gt;
&lt;br /&gt;
Aspirin IMU is available in the [http://thequadshot.com/collections/all Transition Robotics/Quadshot Online Shop].&lt;br /&gt;
&lt;br /&gt;
There are three options of Aspirin IMU:&lt;br /&gt;
* [http://thequadshot.com/products/aspirin-imu Without a carrier board]&lt;br /&gt;
* [http://thequadshot.com/products/aspirin-imu With Booz carrier board]&lt;br /&gt;
* [http://thequadshot.com/products/aspirin-imu With next generation flat carrier board]&lt;br /&gt;
** [http://thequadshot.com/products/lisa-l-aspirin-flat-carrier The flat carrier board can be purchased separately as well]&lt;br /&gt;
&lt;br /&gt;
== Mechanical Dimensions ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Aspirin_top_mechanical.png|500px|Aspirin Footprint Mechanical Dimensions]]&lt;br /&gt;
&lt;br /&gt;
The overall height of the board is about 3mm.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
'''Source files'''&lt;br /&gt;
:*download available on GitHub: ''[https://github.com/paparazzi/paparazzi-hardware/tree/master/controller/sensors/imu/aspirin Aspirin IMU and Carrier Board Cadsoft Eagle 6 Design]''&lt;br /&gt;
'''Gerber &amp;amp; Drill files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need generated gerbers and drill files&lt;br /&gt;
'''Assembly files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Aspirin Components layouts (pdf)&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Aspirin Bill Of Material&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Get_Hardware&amp;diff=15030</id>
		<title>Get Hardware</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Get_Hardware&amp;diff=15030"/>
		<updated>2013-05-10T19:59:54Z</updated>

		<summary type="html">&lt;p&gt;Jkg: /* u-Blox GPS receivers */ added location for CSGshop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an open-source project, all source code and hardware plans are [https://github.com/paparazzi/paparazzi-hardware freely available on GitHub] for anyone to produce, use, modify, and redistribute in accordance with the [http://www.gnu.org/licenses/gpl.txt GPL License Agreement] which requires only that the open-source nature of the project be maintained by all who redistribute it.&lt;br /&gt;
&lt;br /&gt;
We encourage the distribution of hardware for profit or otherwise and invite any users with paparazzi-related hardware to post links and purchasing information on this page.  Please use the [[Talk:Get_Hardware&amp;amp;action=edit|Discussion Tab]] to describe your experiences with any of these vendors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [http://aerofu.com [[image:aerofu_logo.png]]  Aerofu.com ] =&lt;br /&gt;
&lt;br /&gt;
Low cost Paparazzi hardware from Australia. &lt;br /&gt;
Licenced to export to [http://aerofu.com/index.php?main_page=page&amp;amp;id=2 33 countries], including Europe and North America. Recentry restocked with:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
[http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=30 Tiny] &lt;br /&gt;
and&lt;br /&gt;
[http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=31 TWOG]&lt;br /&gt;
autopilots.&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
Complete Kits ([http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=48 Tiny] or [http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=49 TWOG] based).&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
[http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=10&amp;amp;products_id=20 PPM Encoders] and [http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=8&amp;amp;products_id=44 IR Sensors] from the Paparazzi project.&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
Inexpensive [http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=7&amp;amp;products_id=12 uBlox LEA-5H GPS units].&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;various PCBs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [http://www.ppzuav.com/ [[Image:Ppzuav.jpg]]] www.ppzuav.com [[Image:All ppz autopilots med.jpg|thumb|400px|Paparazzi controllers]] =&lt;br /&gt;
&amp;lt;h2&amp;gt;Providing professionally assembled and tested hardware and PCBs for your Paparazzi Projects since 2007&amp;lt;/h2&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;background:#00C000&amp;quot;&amp;gt;NEW:&amp;lt;/span&amp;gt; Yes we have [[SUMO]] bundles and [[SUMO/prepare_electronics|SUMO electronics]].&lt;br /&gt;
&amp;lt;b&amp;gt;eMail to:&amp;lt;/b&amp;gt; sales@ppzuav.com for details.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
We want to help you get your Paparazzi project off the ground. We have helped hundreds of projects become successful. Confused what to buy? Just give us an email and we will help you decide ('''sales@ppzuav.com''').&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Whatever the part we make all the Paparazzi hardware available either via bare PCBs or fully assembled ready to program. TWOG, Tiny2.11, Umarim, YAPA2 we can make them all in any quantity you require.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not see what you need just ask. Please eMail with any questions or special requests before you place your orders. We return emails as quickly as possible.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Visit the PPZUAZ [https://www.ppzuav.com WebStore] to see the latest offerings.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;NEW BUNDLE-&amp;gt;:&amp;lt;/b&amp;gt;[https://www.ppzuav.com/osc/product_info.php?cPath=2&amp;amp;products_id=144 UmarimLite v2 Bundle]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Need Just PCBs? We have them. Click [https://www.ppzuav.com/osc/index.php?cPath=1 here] to see them.&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [http://transition-robotics.com [[Image:Transition_Robotics_Logo.png|100px]] Transition Robotics Inc.] [[Image:LisaM_V2_0_TopView.JPG|thumb|Lisa/M V2.0 top view]][[Image:LisaM_V2_0_BottomView.JPG|thumb|Lisa/M V2.0 bottom view]] =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Transition Robotics Inc. is a young company developing new solutions for and with the Paparazzi UAV platform. Their core product is the [[Image:Quadshot_Logo.jpg|100px|link=http://thequadshot.com|Quadshot]], a VTOL transitioning aircraft.&lt;br /&gt;
&lt;br /&gt;
Beside the Quadshot itself they develop and provide hardware and software that is especially optimized for Paparazzi, such as the Lisa Autopilots, Aspirin IMUs and associated accessories.&lt;br /&gt;
&lt;br /&gt;
They have a shop on their [http://transition-robotics.com Quadshot product page].&lt;br /&gt;
&lt;br /&gt;
As of February 2012, Transition Robotics, Inc. has acquired all IP and Paparazzi related inventory from Joby Robotics. We are thankful to Joby Robotics for their important and faithful support of Paparazzi related hardware projects, and hope to carry on this tradition. Hardware formerly supplied by Joby Robotics may now be purchased at the [http://transition-robotics.com/collections/all Transition Robotics/Quadshot webstore.]&lt;br /&gt;
&lt;br /&gt;
The [http://transition-robotics.com/collections/all TRI/Quadshot Webstore] also stocks pre-crimped Molex Picoblade wires and connector housings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
&lt;br /&gt;
==[http://www.olimex.com/pcb/ Olimex]==&lt;br /&gt;
[[image:pcb-green.jpg|thumb|250px|Olimex PCBs]]&lt;br /&gt;
*Fast PCB Prototypes [http://www.olimex.com/pcb/ www.olimex.com/pcb]&lt;br /&gt;
*Development Boards [http://www.olimex.com/dev/index.html www.olimex.com/dev/]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[http://www.sparkfun.com Sparkfun]==&lt;br /&gt;
[[image:P1030095.jpg|thumb|250px|Sparkfun]]&lt;br /&gt;
Sparkfun is a great source of miscellaneous electronics like:&lt;br /&gt;
* Development boards&lt;br /&gt;
* GPS&lt;br /&gt;
* Gyros&lt;br /&gt;
* Accelerometers&lt;br /&gt;
* Pressure sensors&lt;br /&gt;
* Ultrasonic distance sensors&lt;br /&gt;
* Temperature/humidity sensors&lt;br /&gt;
* USB to Serial converters&lt;br /&gt;
* LEDs&lt;br /&gt;
* Etc.&lt;br /&gt;
They also have an inexpensive PCB service, [http://batchpcb.com/index.php/Products BatchPCB].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Sparkfun distributors in Europe'''&lt;br /&gt;
&lt;br /&gt;
Incomplete list.&lt;br /&gt;
*http://www.lipoly.de/index.php?main_page=index&amp;amp;cPath=880_883&amp;amp;language=en&lt;br /&gt;
*http://www.watterott.com/en/SparkFun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [https://store.diydrones.com/ DIYDrones] ==&lt;br /&gt;
Mainly focused on ArduPilot hardware. But carries Paparazzi compatible Telemetry and sensor boards.&lt;br /&gt;
&lt;br /&gt;
'''DIYDrones distributors in Europe'''&lt;br /&gt;
*http://www.lipoly.de/index.php?main_page=index&amp;amp;cPath=880_1912 [DE]&lt;br /&gt;
*http://www.unmannedtechshop.co.uk/ [UK]&lt;br /&gt;
*http://www.buildyourowndrone.co.uk/ [UK]&lt;br /&gt;
&lt;br /&gt;
==u-Blox GPS receivers==&lt;br /&gt;
&lt;br /&gt;
There seems to be a few alternative source of u-Blox GPS out there. They are considerably cheaper then the samples u-Blox offers&lt;br /&gt;
&lt;br /&gt;
If you do order from any of them, please update this page with your feedback.&lt;br /&gt;
&lt;br /&gt;
Here's a few link worth exploring:&lt;br /&gt;
&lt;br /&gt;
*[http://www.navilock.de/produkte/gruppen/13/Boards_und_Module Navilock] (also available on [http://www.amazon.de Amazon.de] by searching for Navilock)&lt;br /&gt;
*http://www.rfdesign.co.za/pages/5645456/Products/GPS-Products/Antaris-4-Modules.asp (Also [http://www.rfdesign.co.za/pages/5645456/Products/GPS-Products/u-blox-5-Modules.asp u-blox 5] and [http://www.rfdesign.co.za/pages/5645456/Products/GPS-Products/u-blox-6-Modules.asp u-blox 6] modules avialable)&lt;br /&gt;
*http://www.comet.srl.ro/shop/info.html?ID=6195 ( Link error, you can find them in this list: http://www.comet.srl.ro/shop/statements.html?Type=MOD&amp;amp;Subtype=GPS )&lt;br /&gt;
*http://www.expedienttech.com/  ( Singapore )&lt;br /&gt;
*http://www.csgshop.com/category.php?id_category=16 (US UBLOX MAX-6Q) ( Lithuania )&lt;br /&gt;
&lt;br /&gt;
==Airspeed Sensors==&lt;br /&gt;
&lt;br /&gt;
Eagle Tree Systems makes a small standalone airspeed sensor that can be connected via i2c. They also sell pitot tubes standalone for other differential pressure sensors. For integration, please see [[Sensors/Airspeed]].&lt;br /&gt;
*[http://www.eagletreesystems.com/Standalone/standalone.htm Eagle Tree Systems] (Also available from a number of distributors)&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:User_Documentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DIGI XBee telemetry modules ==&lt;br /&gt;
For detailed shopping guide see [Modems]&lt;br /&gt;
*http://www.watterott.com/en/Digi (DE EU)&lt;br /&gt;
*https://store.diydrones.com/ (US See above for local distributors)&lt;br /&gt;
*http://unmannedtechshop.co.uk/UAV-Components/UAV-telemetry (UK)&lt;br /&gt;
*http://mouser.com/ (AU and other regions)&lt;br /&gt;
&lt;br /&gt;
= Old vendors =&lt;br /&gt;
&lt;br /&gt;
Here is a list of former paparazzi hardware vendors for reference. They were providing a great service to the Paparazzi community.&lt;br /&gt;
&lt;br /&gt;
* [http://chebuzz.com/paparazzi Chebuzz Pprz] had to move back to US and close his store, [http://aerofu.com/ AeroFu] is carrying on his business.&lt;br /&gt;
* [http://jobyrobotics.com Joby Robotics] stock and IP was bought by [http://transition-robotics.com Transition Robotics] that is carrying on their business.&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Module/Airspeed_ETS&amp;diff=14988</id>
		<title>Module/Airspeed ETS</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Module/Airspeed_ETS&amp;diff=14988"/>
		<updated>2013-04-30T18:03:32Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added directions to enable i2c&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Image:Ets_airspeed_v3.jpg|thumb|right|Eagletree Airspeed v3]]&lt;br /&gt;
&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Modules&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The EagleTree Airspeed Sensor is a low cost module and comes with a good pitot tube (Prandtl style, pitot-static tube) that includes static and dynamic ports. It has an I²C interface that connects directly to the Autopilot I²C port. The paparazzi autopilot code is able to regulate the throttle in order to keep the airspeed constant (and a minimum ground speed).&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||Module name||sensors/airspeed_ets&lt;br /&gt;
|-&lt;br /&gt;
|Sensor type&lt;br /&gt;
|air speed&lt;br /&gt;
|-&lt;br /&gt;
|Range&lt;br /&gt;
|4m/s .. 150m/s&lt;br /&gt;
|-&lt;br /&gt;
|Resolution&lt;br /&gt;
|0.3m/s&lt;br /&gt;
|-&lt;br /&gt;
|Refresh rate&lt;br /&gt;
|10Hz&lt;br /&gt;
|-&lt;br /&gt;
|I2C address&lt;br /&gt;
|0xEA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[http://www.eagletreesystems.com/Support/manuals/airspeed-v3.pdf Product data sheet]&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The sensor directly interfaces to the 3.3V I2C port of the autopilots and is supplied by +5V. When you buy the airspeed sensor it is set to operate in the default mode. Make sure you did not set it somehow to 3rd party mode.&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||'''Autopilot I2C pin'''||'''Autopilot I2C'''||'''ETS Airspeed wire colour'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GND&lt;br /&gt;
|white&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| +5V&lt;br /&gt;
|red&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|SDA&lt;br /&gt;
|yellow&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|SCL&lt;br /&gt;
|brown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To use it load the airspeed_ets module:&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;modules&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;load name=&amp;quot;airspeed_ets.xml&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
and enable I2C0 if you are not using it already:&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;define name=&amp;quot;USE_I2C0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
You can also set some '''optional parameters to change the default configuration'''. For example to use i2c1 instead of i2c0, a scale of 2 (default is 1.8) and offset of 50 (default is 0):&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;modules&amp;gt;&lt;br /&gt;
    &amp;lt;load name=&amp;quot;airspeed_ets.xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;define name=&amp;quot;AIRSPEED_ETS_SCALE&amp;quot;   value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;define name=&amp;quot;AIRSPEED_ETS_OFFSET&amp;quot;  value=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;define name=&amp;quot;AIRSPEED_ETS_I2C_DEV&amp;quot; value=&amp;quot;i2c1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/load&amp;gt;&lt;br /&gt;
  &amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage as sensor for speed control==&lt;br /&gt;
&lt;br /&gt;
To use the sensor to control the speed of your aircraft add the aggressive climb flag, define which I2C device you are enabling and enable airspeed control:&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;target name=&amp;quot;ap&amp;quot; board=&amp;quot;twog_1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;AGR_CLIMB&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;USE_I2C0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;USE_AIRSPEED&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Airframe configuration ===&lt;br /&gt;
 &lt;br /&gt;
Now to use real airspeed values for adjusting your aircraft autopilot behavior, add the following to the end of the &amp;quot;VERTICAL CONTROL&amp;quot; section of your airframe file:&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;section name=&amp;quot;VERTICAL_CONTROL&amp;quot; prefix=&amp;quot;V_CTL_&amp;quot;&amp;gt;&lt;br /&gt;
    ....&lt;br /&gt;
    &amp;lt;!-- auto airspeed and altitude inner loop (for airspeed sensor) --&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;AUTO_AIRSPEED_SETPOINT&amp;quot; value=&amp;quot;13.0&amp;quot; unit=&amp;quot;m/s&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;AUTO_AIRSPEED_PGAIN&amp;quot; value=&amp;quot;0.060&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;AUTO_AIRSPEED_IGAIN&amp;quot; value=&amp;quot;0.050&amp;quot;/&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
    &amp;lt;define name=&amp;quot;AUTO_GROUNDSPEED_SETPOINT&amp;quot; value=&amp;quot;7.0&amp;quot; unit=&amp;quot;m/s&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;AUTO_GROUNDSPEED_PGAIN&amp;quot; value=&amp;quot;0.75&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;define name=&amp;quot;AUTO_GROUNDSPEED_IGAIN&amp;quot; value=&amp;quot;0.25&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
  &lt;br /&gt;
Note that the SETPOINT values may need to be adjusted to suit your aircraft.&lt;br /&gt;
&lt;br /&gt;
Note that depending on whether you set the AIRSPEED setpoint or the GROUNDSPEED setpoint higher, either constant airspeed or constant groundspeed, respectively, will be the goal of the controller.&lt;br /&gt;
&lt;br /&gt;
See paparazzi/conf/airframes/easystar_ets_example.xml for an example airframe configuration.&lt;br /&gt;
&lt;br /&gt;
=== Seeing the speed values ===&lt;br /&gt;
To debug or log the raw values from the ETS airspeed sensor define SENSOR_SYNC_SEND in your airframe file to send the message AIRSPEED_ETS on every sensor reading. Note that defining this sends the AIRSPEED_ETS message at the sensor read rate as defined in conf/modules/airspeed_ets.xml. This does not have any bearing on the AIRSPEED message (if both SENSOR_SYNC_SEND and USE_AIRSPEED are defined, then both messages are sent).&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;modules&amp;gt;&lt;br /&gt;
    &amp;lt;load name=&amp;quot;airspeed_ets.xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;define name=&amp;quot;SENSOR_SYNC_SEND&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/load&amp;gt;&lt;br /&gt;
  &amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The general airspeed can be displayed in the Messages tool by adding the AIRSPEED message to the telemetry file as follows:&lt;br /&gt;
{{Box Code|conf/telemetry/default.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;process name=&amp;quot;Ap&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;mode name=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;message name=&amp;quot;AIRSPEED&amp;quot;   period=&amp;quot;1.0&amp;quot;/&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The AIRSPEED_ETS message does NOT need to be added to the telemetry configuration since it is sent directly by the module if SENSOR_SYNC_SEND is defined.&lt;br /&gt;
&lt;br /&gt;
NOTES&lt;br /&gt;
# In the GCS, the strip displays ground speed and '''not''' airspeed by default. In order to display airspeed, drag-and-drop the airspeed message field from the Messages tool onto the 2D map of the GCS. &lt;br /&gt;
# The telemetry name AIRSPEED&amp;quot;  should actually be called SPEED and contains Groundspeed and airspeed return values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage as sensor for air speed measurement only ==&lt;br /&gt;
&lt;br /&gt;
To see the sensors data in the log file set the SENSOR_SYNC_SEND in your airframe file. Every time new data is available it will be sent directly.&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;modules&amp;gt;&lt;br /&gt;
    &amp;lt;load name=&amp;quot;airspeed_ets.xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;define name=&amp;quot;SENSOR_SYNC_SEND&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/load&amp;gt;&lt;br /&gt;
  &amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Result message===&lt;br /&gt;
&lt;br /&gt;
The raw data (adc), estimated offset at init time (offset) and the converted result (scaled) is written to the log file.&lt;br /&gt;
{{Box Code|conf/messages.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;message name=&amp;quot;AIRSPEED_ETS&amp;quot; id=&amp;quot;57&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;field name=&amp;quot;adc&amp;quot; type=&amp;quot;uint16&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;field name=&amp;quot;offset&amp;quot; type=&amp;quot;uint16&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;field name=&amp;quot;scaled&amp;quot; type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sample log file lines&lt;br /&gt;
 149.529 123 AIRSPEED_ETS 1626 1606 8.024844&lt;br /&gt;
 149.633 123 AIRSPEED_ETS 1626 1606 8.024844&lt;br /&gt;
 149.730 123 AIRSPEED_ETS 1627 1606 7.942226&lt;br /&gt;
 149.841 123 AIRSPEED_ETS 1628 1606 7.942226&lt;br /&gt;
&lt;br /&gt;
[[Category:User_Documentation]] [[Category:Modules]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=14951</id>
		<title>Lisa/M v2.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=14951"/>
		<updated>2013-04-27T01:27:51Z</updated>

		<summary type="html">&lt;p&gt;Jkg: hopefully improved I2C bus description clarity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; width: 15%&amp;quot;&amp;gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Autopilots&amp;lt;/categorytree&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 45%; overflow: hidden&amp;quot;&amp;gt;[[Image:LisaM_V2_0_TopView.JPG|right|500px|Lisa/M V2.0 top view]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisa/M is a small, general purpose autopilot designed with flexibility across multiple applications in mind. Small weight and size, with (optional) integrated [[AspirinIMU | Aspirin IMU]] and full size 0.1&amp;quot; servo headers make the Lisa/M suitable for both fixed-wing and rotorcraft vehicles. This autopilot is based on a STM32 processor for extensive peripheral connection and faster processing.&lt;br /&gt;
&lt;br /&gt;
A number of tutorials are being prepared for getting started with Lisa/M:&lt;br /&gt;
* [[Lisa/M/Tutorial/FixedWing|Fixedwing tutorial]]&lt;br /&gt;
* [[Lisa/M/Tutorial/RotorCraft|Rotorcraft tutorial]]&lt;br /&gt;
&lt;br /&gt;
Please join us in our quest to make the getting started information even more, eh... informative, by adjusting those pages with your own improvements.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Lisa/M is based on the 64 pins STM32F105RCT6 [http://www.st.com/internet/mcu/product/221023.jsp connectivity line family] processor featuring 64k of RAM and 256k of FLASH. All the pins are exposed, providing access to the complete set of the STM32 peripherals.&lt;br /&gt;
NOTE: This MCU is different from LISA/L. Lisa/L is based on the 64 pins STM32F103RE processor featuring 64k of RAM and 512k of FLASH, which is part of the [http://www.st.com/internet/mcu/product/164485.jsp high-density performance line family].&lt;br /&gt;
&lt;br /&gt;
* STM32 microcontroller [http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00220364.pdf STM32F105RCT6 datasheet] with 256kB flash and 64kB RAM&lt;br /&gt;
* Pressure sensor [http://www.bosch-sensortec.com/content/language1/html/3477.htm BMP085] (optional as of 08/2012)&lt;br /&gt;
* 7 x Analog input channels&lt;br /&gt;
* 3 x Generic digital in-/out-puts&lt;br /&gt;
* 2 x 3.3V TTL UART (5V tolerant)&lt;br /&gt;
* 8 x Servo PPM outputs (only 6 if second I2C (I2C1) bus in use)&lt;br /&gt;
* 1 x CAN bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/I2c I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C] bus (2 x when using only the first 6 Servo PPM outputs)&lt;br /&gt;
* 1 x Micro USB&lt;br /&gt;
* 4 x status LEDs with attached test point&lt;br /&gt;
* 10.8 grams (0.4 oz) (with Aspirin IMU mounted)&lt;br /&gt;
* 9.9 grams (0.35 oz) (without Aspirin IMU mounted)&lt;br /&gt;
* ~34mm x ~60mm x ~10mm&lt;br /&gt;
* 4 layers PCB design&lt;br /&gt;
&lt;br /&gt;
With mounted Aspirin IMU has the following additional sensors on board:&lt;br /&gt;
&lt;br /&gt;
* 3 Axis Gyroscope&lt;br /&gt;
* 3 Axis Accelerometer&lt;br /&gt;
* 3 Axis Magnetometer&lt;br /&gt;
* Barometer MS5611 (as of Aspirin v2.1)&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
'''Lisa/M has pads for the BMP085 pressure sensor. Lias/M 2 boards made before August 2012 had the BMP085 sensor mounted. Boards made after August 2012 do not have the sensor mounted as they are designed to be used with Aspirin 2.1 which has the new MS5611-01BA03 barometric pressure sensor.'''&lt;br /&gt;
&lt;br /&gt;
The drivers for the MS5611-01BA03 are work in progress and are available in the master branch of the Paparazzi codebase. All help with testing and improving the driver are very welcome!&lt;br /&gt;
&lt;br /&gt;
So, except for a GPS unit you have all necessary sensors for full attitude and altitude stabilization in an extremely small package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200px heights=200px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_TopView.JPG|Lisa/M V2.0 top view&lt;br /&gt;
Image:LisaM_V2_0_BottomView.JPG|Lisa/M V2.0 bottom view&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
Pins Name and Type are specified with respect to the Autopilot Board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:LisaM_V2_0_top_labeled.png|900px]]&lt;br /&gt;
[[Image:LisaM_warning_label.png|200px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SERVO1/2/3/4/5/6/7/8'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||SERVOx||OUT||Servo signal (PWM)(See Note 1 below)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|2||SV||PWR||Servo Bus Voltage Rail (conf w/ JP1)||style=&amp;quot;background:red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''JTAG'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||JTAG Debug Header (Pin 1 is +3V3)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2||V_IN||PWR||UART Voltage (conf w/ JP6 and JP7)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART3 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART3 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1/5'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||RX1||IN||USART1 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|5|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|6||RX5||IN||UART5 Serial Input (3.3V level)(Pullup to Pin 5 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''GPIO'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||PC12||I/O||GPIO, connected to PC12 (5V tolerant)||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|-&lt;br /&gt;
|5||TRST||I/O||JTAG_TRST (also connected to LED1 cathode)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC4||I/O||by default connected to LED_4 cathode (Remove LED/resistor to use as ADC4)||style=&amp;quot;background:magenta; color:white&amp;quot;|Magenta&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC6||I/O||by default connected to LED_3 cathode (Remove LED/resistor to use as ADC6)||style=&amp;quot;background:#FFA1B2; color:black&amp;quot;|Pink&lt;br /&gt;
|-&lt;br /&gt;
|6||BOOT0||I/O||BOOT0||style=&amp;quot;background:grey; color:black&amp;quot;|Grey&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''USB'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||USB (The USB connections are also available as 0.05&amp;quot; (1.27mm) through hole pads underneath the GPIO header)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C1 CAN'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| V_BATT||PWR||V_BATT Bus on autopilot, voltage divider for V_BAT_MEAS, (conf w/ JP2 to connect to V_IN)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| V_IN||PWR||Connected to autopilot voltage regulator inputs (conf w/ JP1, JP2 and JP3)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||CANL||I/O||CANL (5V level)||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|5||CANH||I/O||CANH (5V level)||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|6||SCL||I/O||SCL (5V level)(See Note 1 below)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|7||SDA||I/O||SDA (5V level)(See Note 1 below)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SPI1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||MOSI||Out||MOSI||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||MISO||In||MISO||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|5||SCK||Out||SCK||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|6||SS||Out||SS||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|7||DRDY||I/O||DRDY||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC1||In||ADC1 (or LED_6 if populated)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC2||In||ADC2 (or LED_7 if populated)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|6||ADC3||In||ADC3 (or LED_8 if populated)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||UART Voltage (conf w/ JP4 and JP5)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART2 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART2 Serial Input (3.3V level)('''NOT 5V TOLERANT''')(Pullup to Pin 2 voltage)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||SCL||I/O||SCL (3.3V level)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|4||SDA||I/O||SDA (3.3V level)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE 1''': SERVO7 and SERVO8 are directly connected to I2C1_SCL and I2C1_SDA lines. Therefore one has to choose, either use SERVO7 and SERVO8 '''OR''' have the I2C1 bus available, if that one needs to be used for whatever reason alongside the I2C2 bus. To use the servos 7 and 8 just set the  &amp;lt;define name=&amp;quot;USE_SERVOS_7AND8&amp;quot;/&amp;gt;  in your airframe file and you are good to go. For this to work one must make sure to have the latest Paparazzi sourcecode.&lt;br /&gt;
&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Lisa/M 2.0 has 5 LEDS (+1 power LED). There are 3 additional LEDs (LED_6, LED_7, LED_8) that are not populated by default (in favor of using ADC1-3 on the ANALOG1 connector).&lt;br /&gt;
By default the LEDs are use for:&lt;br /&gt;
; LED_1, red: ''SYS_TIME_LED'': blinks with 1Hz&lt;br /&gt;
; LED_2, green : ''AHRS_ALIGNER_LED'': blinks until the AHRS is aligned (gyro bias initilalized) and then stays on&lt;br /&gt;
; LED_3, green : ''GPS_LED'': blinking if trying to get a fix, on if 3D fix&lt;br /&gt;
; LED_4, red : ''RADIO_CONTROL_LED'': on if RC signal is ok&lt;br /&gt;
; LED_5, green : not set to anything by default&lt;br /&gt;
&lt;br /&gt;
=== Jumper Configuration ===&lt;br /&gt;
There are a number of jumpers on Lisa/M used to configure voltage levels and power input.&lt;br /&gt;
&lt;br /&gt;
The default configuration is UART3 VCC at V_IN, UART1/2/5 VCC at +3V3, with the V_SERVO servo voltage rail NOT connected to the autopilot V_IN rail, allowing one to power the autopilot and servos separately. The +5V regulator is NOT bypassed, allowing a regulated +5V on listed headers and for the CAN transceiver and I2C level shifter. The V_BATT connector is NOT connected to V_IN, so one can attach a battery voltage to the V_BATT pin to measure the battery voltage, if so desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_top_jumpers_and_leds.png | Lisa/M v2.0 Top Jumpers and LEDs&lt;br /&gt;
Image:LisaM_V2_0_bottom_jumpers.png | Lisa/M v2.0 Bottom Jumpers&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Power Jumper Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP1||SERVO_BUS to V_IN||OPEN||Connects servo header voltage rail SERVO_BUS to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP2||V_BATT to V_IN||OPEN||Connects I2C1/CAN rail V_BATT to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP3||V_IN to +5V||OPEN||Connects autopilot input voltage V_IN rail to autopilot +5V rail, bypassing onboard 5V supply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP6||UART3_VCC to V_IN||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART3 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP7||UART3_VCC to +3V3||OPEN||Connects UART3 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting!!!'''&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP6 AND JP7 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP4||UART2_VCC to V_IN||OPEN||Connects UART2 connector VCC to autopilot input voltage V_IN rail '''SEE WARNING BELOW'''&lt;br /&gt;
|-&lt;br /&gt;
|JP5||UART2_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART2 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART2 RX is NOT 5V TOLERANT. Thus, while possible to connect UART2_VCC to V_IN, DO NOT ATTEMPT THIS. Only use JP5 (the default).&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP4 AND JP5 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1 and UART5 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP8||UART1&amp;amp;5_VCC to V_IN||OPEN||Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP9||UART1&amp;amp;5_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART1 and UART5 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
There are additional jumpers on the board for expert or developer configurations, please see [[Lisa/M_v20#Schematic|schematic]] and [[Lisa/M_v20#Downloads|layout]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Powering the Board ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_warning_label.png|right|200px]]&lt;br /&gt;
&lt;br /&gt;
The 3.3V regulator on Lisa/M is a [http://www.micrel.com/page.do?page=/product-info/products/mic5209.shtml MIC5209-3.3YM] capable of delivering up to 500mA. While it is possible to power this regulator with up to 16V, '''DO NOT''' do this. By default, the UART3 RX pin is pulled up to the input voltage V_IN. For this reason, 5V is the maximum input voltage. Note that the UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting. If one desires to have V_IN at a higher voltage, the jumpers should be adjusted accordingly. As noted, this regulator can handle up to 16V, though experience has shown that this regulator can become very hot in operation with high input voltages, resulting in potential thermal shutdown while in flight. Depending on the expected current draw, it is best to power this regulator with a lower voltage. 5V is the perfect choice. &lt;br /&gt;
&lt;br /&gt;
The onboard 5V regulator on Lisa/M is a [http://www.national.com/pf/LP/LP2992.html LP2992], a low-noise, low-dropout linear regulator capable of delivering up to 250mA. This regulator can be bypassed with JP3, connecting the autopilot V_IN bus directly to the autopilot 5V bus if, for example, one is using an external 5V regulated supply, and a higher current is needed. Unless external use of 5V is required on the ANALOG1 and ANALOG2 headers, the only 5V usage onboard is for the CAN transceiver and the I2C1 level shifter.&lt;br /&gt;
&lt;br /&gt;
When measuring the supply voltage of a battery with the V_BATT pin (could be connected to V_IN through JP2), it is important to note the maximum voltage limit. The voltage divider on the board for measuring with a 3.3V ADC is --'''V_BAT'''--/\/\'''10k'''/\/\--'''V_BAT_MEAS'''--/\/\'''2k2'''/\/\--'''GND'''--. This means that the maximum allowable voltage on V_BATT is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;V\_BAT_{max} = 3.3V*\frac{10k}{2.2k} = 15V&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a higher voltage measurement is desired, another voltage divider is required off-board. Alternatively, one could modify the existing voltage divider (e.g. change 10k resistor to 22k to get 33V maximum). When checking if voltage exceeds the maximum, make sure to consider maximum battery voltage, not nominal voltage (e.g. 4.22V or so for a single lithium cell, not 3.7V nominal, so the maximum number of cells in series is 3, like a 3S LiPo pack).&lt;br /&gt;
&lt;br /&gt;
== Schematic ==&lt;br /&gt;
&amp;lt;gallery widths=250px heights=168px&amp;gt;&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_1.png | LisaM V2.0 Schematic Sheet 1/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_2.png | LisaM V2.0 Schematic Sheet 2/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_3.png | LisaM V2.0 Schematic Sheet 3/3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples of Airborne Equipment Electrical Connections ==&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and PWM Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_v2_0_wiring_quadrocopter_spektrum_pwmesc.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESCs have a battery eliminator circuit (BEC) function and provide 5 volts on their 5V pins. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
When using cheap ATMega or SiLabs-based PWM motor controllers consider replacing their firmware with either [https://github.com/sim-/tgy Simon Kirby] or [https://github.com/bitdump/BLHeli BLHeli] firmware respectively to get useful performance of your multicopter! You can find a firmware compatibility list [https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZRlE here].&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and I2C Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_quadrocopter_spektrum_i2c_esc_wiring.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This diagram &amp;quot;should&amp;quot; be the same for AscTec as well as Mikrokopter motor controller based airframes.&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers and Elevons Only ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum_elevons.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESC has a BEC and provides 5 volts on its 5V pin. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESC has a BEC and provides 5 volts on its 5V pin. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
=== Transitioning [http://wiki.thequadshot.com Quadshot] Using Spektrum Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_quadshot_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
The ESCs have BECs and provide 5 volts on their 5V pins. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
Still need: Large Fixed-wing with advanced power system and/or IC engine, PPM example&lt;br /&gt;
&lt;br /&gt;
== R/C Receivers ==&lt;br /&gt;
&lt;br /&gt;
One can use Spektrum DSM2 or compatible receivers as well as traditional PPM receivers.  It is even possible to connect two Spectrum or compatible satellite receivers for better redundancy or to improve RC signal reception. Connecting a RC receiver for flying your aircraft in manual mode during setup and test phase is 99% of the cases a must. Therefore the Paparazzi team made it easy to connect one.&lt;br /&gt;
&lt;br /&gt;
===  Using a Spectrum DSM receiver ===&lt;br /&gt;
&lt;br /&gt;
==== Physically connecting ====&lt;br /&gt;
&lt;br /&gt;
Wiring up a Spektrum or compatible satellite receiver is not to difficult to do. It is very important to make absolutley sure the connectors are properly made. Not being precise in this step can mean full RC loss and loss of airframe in the first tuning testflights. &lt;br /&gt;
&lt;br /&gt;
The spektrum satellite receiver should be connected to the UART1 connector on the autopilot board. Make sure the voltage on the AP board UART1 + pin is not to high, or to low for your receiver.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
# Connect the minus(-) of the receiver to GND of UART1&lt;br /&gt;
# The receiver plus(+) to the UART1 Plus(+) &lt;br /&gt;
# Data out signal of the receiver to the RX pin on the UART1&lt;br /&gt;
&lt;br /&gt;
==== Binding ====&lt;br /&gt;
&lt;br /&gt;
To get a receiver and transmitter to work together you must perform a binding process. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is important to '''bind''' your Spectrum DSM receiver to your transmitter '''via''' your '''Lisa board''', not in any other way!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way to bind is by temporary connecting via fiddly small molex pins. It is advised to make a small bind plug out of a molex connector for this purpose. Before you start make sure you have your airframe configuration already uploaded either via USB or a JTAG cable.&lt;br /&gt;
&lt;br /&gt;
The bind procedure:&lt;br /&gt;
&lt;br /&gt;
# On the connector ANALOG1 have a wire between the GND pin ADC1, located in the middle of the board&lt;br /&gt;
# Power up your autopilot board&lt;br /&gt;
# Hold the bind button on your '''transmitter''', while '''keeping it pressed''' switch on your transmitter&lt;br /&gt;
#:Wait.. all light of receiver blink then go steady&lt;br /&gt;
# Let go of your transmitter bind button&lt;br /&gt;
# Power off your Lisa Board&lt;br /&gt;
# remove the wire between GND and ADC1 pins&lt;br /&gt;
# Repower your board, if you have servos connected and wiggle the RC transmitter sticks some servos should move&lt;br /&gt;
&lt;br /&gt;
That all, you are done. Only needs to be done '''once''' for your receiver.&lt;br /&gt;
&lt;br /&gt;
===  Using a PPM receiver ===&lt;br /&gt;
&lt;br /&gt;
Using a PPM receiver, a so called '''PPM sum stream''' input is possible. [[RC_Receivers_and_Radios#PPM_Based_Systems | To make it work, you need a PPM sum stream out capable receiver. Find out more following this link]]  &lt;br /&gt;
&lt;br /&gt;
==== Connecting ====&lt;br /&gt;
&lt;br /&gt;
Connect the PPM out signal to the RX pin of UART1.&lt;br /&gt;
&lt;br /&gt;
Make sure put this in your airframe file in your AP target section.&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;ppm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;UART1_RX&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/subsystem&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
===== Alternative =====&lt;br /&gt;
&lt;br /&gt;
However if in the case you want to use the UART1 port for something else, there is an option to connect the receiver to a servo pin. Yes, that's right, a servo connector is used for receiving a PPM stream '''input'''.  If you want to walk that path, the default pin number to capture the PPM sum stream is via servo connector SERVO6&lt;br /&gt;
&lt;br /&gt;
If you connect the PPM ou capable receiver that way make sure to put this in your airframe file in your AP target section:&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;ppm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;SERVO6&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/subsystem&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
If you do not have or cannot modify a receiver to a ''PPM out'' able receiver, a [[PPM_Encoder | PPM encoder board]] can be used to avoid opening your receiver for PPM out modification.&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== UART I/O ===&lt;br /&gt;
&lt;br /&gt;
UART pins can also be used as general purpose I/O, this might come in handy in case all other inputs or your AP board are in use.&lt;br /&gt;
&lt;br /&gt;
===  USB as UART1TX + hardware flow control===&lt;br /&gt;
&lt;br /&gt;
[[File:Lisam-usb-uart1.jpg]]&lt;br /&gt;
&lt;br /&gt;
The USB_VBUS on the Lisa/M 2.0 can be used as UART1 TX. To do this, a diode has to be removed. Make sure to include a series resistor of 100-3000 Ohm to protect the microcontroller from overcurrents. The 2nd and 3th pin of the USB pads are CTS and RTS respactively. It is recommended to include a series resistor in the RTS line, as this is an outgoing line. &lt;br /&gt;
&lt;br /&gt;
If you want to enable flow control in the software, but don't want to use flow control when no cable is connected to the CTS/RTS, a pulldown resistor of 10 kOhm has to be added between the CTS and the GND. If you do this, take care when connecting UART devices that have a large series resistor in their RTS line. The combination of the pulldown resistor and the series resistor might cause the high-level voltage to drop under the high-level treshold of the microcontroller, causing strange behaviour.&lt;br /&gt;
&lt;br /&gt;
For Example the RTS , mostly a purple wire, is the '''pin 10''' on the Xtend module when set in the module with Hardware flow control (use X-CTU)&lt;br /&gt;
CTS, most blue, on pin 9 of the Xtend&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:Lisam-diode.JPG | Remove this diode. After removing this diode you can not power the board via USB anymore.&lt;br /&gt;
Image:Lisam-gpio-usb.JPG | Take care of the small distance between the GPIO pins and the USB pads.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCB ==&lt;br /&gt;
&lt;br /&gt;
=== Gerber &amp;amp; Drill Files  ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 gerber &amp;amp; drill files (zip)''''' ''[[Lisa/M_v2.0#Get the design|Get the design]]''&lt;br /&gt;
&lt;br /&gt;
== Assembly ==&lt;br /&gt;
&lt;br /&gt;
To create and assemble a board oneself is possible. It ake some skills ofcouse. In case you wan to follow that path you need the desing. You came to the right place here is the info to get the needed files;&lt;br /&gt;
&lt;br /&gt;
===Components Layout===&lt;br /&gt;
&lt;br /&gt;
''[[Lisa/M_v2.0#Get the design|Get the design]]''&lt;br /&gt;
&lt;br /&gt;
Need some top and bottom of board images and line drawings here.&lt;br /&gt;
&lt;br /&gt;
=== Bill Of Material ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 Bill Of Material (zipped .xls file)''''' ''[[Lisa/M_v2.0#Get the design|Get the design]]''&lt;br /&gt;
&lt;br /&gt;
== PCB and assembled boards suppliers ==&lt;br /&gt;
&lt;br /&gt;
To difficult to creat your own AP board, understandable, thus pre made board available via [[Get_Hardware|Get Hardware]] page... hopefully :)&lt;br /&gt;
&lt;br /&gt;
== Mechanical Dimensions ==&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_V2_0_top_mechanical.png|500px|Lisa/M v2.0 Mechanical Dimensions]]&lt;br /&gt;
&lt;br /&gt;
The overall height of the board including the servo connectors is 10mm. Note that the overall length includes the USB connector. The mounting holes are nominal 2mm diameter (with a bit of clearance).&lt;br /&gt;
&lt;br /&gt;
== Get the design ==&lt;br /&gt;
&lt;br /&gt;
'''Source files'''&lt;br /&gt;
:*download available on GitHub: ''[https://github.com/paparazzi/paparazzi-hardware/tree/master/controller/lisa_m/v2.0 Lisa/M v2.0 Cadsoft Eagle 6 Design]''&lt;br /&gt;
'''Gerber &amp;amp; Drill files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need generated gerbers and drill files&lt;br /&gt;
'''Assembly files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Components layouts (pdf)&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Bill Of Material&lt;br /&gt;
&lt;br /&gt;
== Uploading new software ==&lt;br /&gt;
New onboard software for the Lisa/M v2.0 can uploaded by connecting your PC via a micro-USB port to the autopilot board. For this the board need to contain the [[Luftboot]] bootloader. All Lisa/M 2.0 from Transition Robotics Inc. come with luftboot already in the board.&lt;br /&gt;
&lt;br /&gt;
An alternative to get your firmware in the board is by using a JTAG connector connected via the 10-pin Samtec connector that is available on the board.&lt;br /&gt;
&lt;br /&gt;
See the [[FirmwareFlashing]] page for an overview of different methods to upload new software to your autopilot.&lt;br /&gt;
&lt;br /&gt;
=== Using luftboot ===&lt;br /&gt;
'''This is the default FLASH_MODE for Lisa/M v2.0''', it could be explicitly selected by adding&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;DFU&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
to the firmware section of your airframe file. Make sure to set Lisa/M 2.0 as it's target board.&lt;br /&gt;
&lt;br /&gt;
Once USB is plugged in, the board automatically goes to bootloader mode and the status LEDs cycle up and down:&lt;br /&gt;
&lt;br /&gt;
[[File:Luftboot.gif|320px]]&lt;br /&gt;
&lt;br /&gt;
If you have trouble entering the bootloader mode or want to upload/update the bootloader itself, see the [[Luftboot]] page.&lt;br /&gt;
&lt;br /&gt;
=== Using JTAG ===&lt;br /&gt;
You still can use a [[JTAG|JTAG adapter]] for [[FirmwareFlashing#JTAG|flashing]] and [[DevGuide/JTAG-Debug|debugging]] your paparazzi firmware. To use [[FirmwareFlashing#JTAG|JTAG flashing]] configure the ''FLASH_MODE'' in your firmware section:&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;JTAG&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Using JTAG will not overwrite the bootloader by default. To overwrite the luftboot bootloader configure&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;NO_LUFTBOOT&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then press upload as normal...&lt;br /&gt;
&lt;br /&gt;
=== Serial Firmware Upload ===&lt;br /&gt;
Firmware upload using the factory integrated bootloader can be useful e.g. if you have overwritten [[Luftboot]] accidentally and don´t have access to [[JTAG]].&amp;lt;br/&amp;gt;&lt;br /&gt;
Either set the flash mode in the target section of the airframe configuration:&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;SERIAL&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
or add it to the commandline invocation:&lt;br /&gt;
 make AIRCRAFT=&amp;lt;aircraftname&amp;gt; ap.upload FLASH_MODE=SERIAL&lt;br /&gt;
&lt;br /&gt;
Due to hardware constraints, the board has to be modified to make use of the bootloader, which is only accessible on UART1:&lt;br /&gt;
# Diode D3 has to be removed (the bigger black brick next to the USB connector). Attention, no more powering via USB after that.&lt;br /&gt;
# BOOT1 has to be set to GND by connecting ACC_DRDY(unused) to GND at the Aspirin pads&lt;br /&gt;
&lt;br /&gt;
Now a boot sequence works as follows:&lt;br /&gt;
#BOOT1 has to be set to 3.3V by use of a jumper cable&lt;br /&gt;
#Connect a 3,3V serial cable (FTDI, MAX232...) to UART1, the TX pin is USB_VBUS&lt;br /&gt;
#Power the board and activate the bootloader program&lt;br /&gt;
&lt;br /&gt;
== Detailed Hardware Revision History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes Between LISA v1.1 and v2.0 ===&lt;br /&gt;
&lt;br /&gt;
* Lots of silkscreen improvements&lt;br /&gt;
* Added attributes to all parts to make the usage of bom-ex ulp possible.&lt;br /&gt;
* Improved routing to allow teardropping&lt;br /&gt;
* Fixed stm32f1, f2 and f4 compatibility circuit. (has to jump to ground not to 3v3)&lt;br /&gt;
* Connected existing UART RX pullups to the respective connector power pins instead of 3v3. To prevent connecting 5V over IO pin to the 3v3 power rail.&lt;br /&gt;
* Added pullups on all UART RX lines to prevent undesired floatation.&lt;br /&gt;
* LED's are connected to 3v3 now. To make sure we don't have an issue with voltage tolerance on the gpio pins.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Hardware Change Requests ==&lt;br /&gt;
&lt;br /&gt;
If you have a Lisa/M 2.0 and in the process of using it you come up with something you find annoying, dangerous, or restricting, add your hardware update requests here. Better still, modify the Lisa schematics yourself and show your new improvements if you are skilled enough to do this.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace BMP085 with MS5611 (the MS5611 seems to be better in performance then the BMP but it is more expensive and seems to be more difficult to obtain. &lt;br /&gt;
** A: Using a MS5611 is possible through using a Aspirin v2.1 board&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace 7 Pin CAN with molex with something less risky to be inserted in 7 Pin SPI in relation to powering the board via CAN molex.&lt;br /&gt;
&lt;br /&gt;
* REQ: Separate spot for external power if powered via separate battery. Realizing we can via Servo ports by Bridge J1 but still like to measure board voltage then and have a way to add power without mistakenly insert I2CCAN Molex conector into SPI Molex on board connector. Thus a separate CAN and Power plug. Power on regular four pin molex with GND, V+5, , V_BATT, V_I (Current sense). Option to have thicker wire to be soldered to the board, for power hungry setups and other issues connectors for power are not a good idea.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace Aspirin IMU board with InvenSense MPU-9150 and bring the MS5611 back onto the Lisa/M board to reduce footprint, mass, and manufacturing cost once the 9150 becomes readily available(if at al with SPI) and is tested to perform well.&lt;br /&gt;
[[Category:Lisa]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=RC_Receivers_and_Radios&amp;diff=14950</id>
		<title>RC Receivers and Radios</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=RC_Receivers_and_Radios&amp;diff=14950"/>
		<updated>2013-04-26T19:40:56Z</updated>

		<summary type="html">&lt;p&gt;Jkg: typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction=&lt;br /&gt;
&lt;br /&gt;
To be able to test your airframe before it flies fully autonomous a regular RC transmitter in combination with a receiver can be used. This is essentioal for testing and tuning your airframe. For this to work the received steering commands have to leave the receiver. Only then with this flow of command data the autopilot when flown in manual mode can do something you tell it to. This page is to give you information of how to connect various receivers. Also how to modify receiver so they can talk to the autopilot.&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
Once you have physically connected your receiver we need to setup the transmitter and receiver combination correctly. This can be an complex task due to the overwhelming amount of options. [[rc_transmitter_and_receiver_setup| To assist you in this setup quest a specific wiki page]] is available to help you out.&lt;br /&gt;
&lt;br /&gt;
=2.4GHz Receivers=&lt;br /&gt;
&lt;br /&gt;
If using a Lisa/M or Lisa/L autopilot board the whole range of Spektrum/JR/Hobbyking satellite receivers can be used directly connected to the AP board. If you come across the term &amp;quot;Satellite Receiver&amp;quot;, it has nothing to do with satellites in earth orbit. It is just a term to describe an auxiliary receiver normally used to improve reception by plugging into the 'main' receiver.&lt;br /&gt;
&lt;br /&gt;
For other autopilot boards to use a 2.4 GHz system a few requirements are necessary&lt;br /&gt;
&lt;br /&gt;
# Must have combined PPM pulsetrain out or use [[PPM_Encoder | PPM Encoder]] board. See the [[Get_Hardware| Get Hardware]] page for links to suppliers)&lt;br /&gt;
# At least one extra channel beyond those needed to control the servos and motor. (throttle-roll-pitch-mode)&lt;br /&gt;
&lt;br /&gt;
==OrangeRX==&lt;br /&gt;
&lt;br /&gt;
[[Image:Orangerx_satellite_receiver.jpg|thumb|left|OrangeRx R100 Receiver]]&lt;br /&gt;
&lt;br /&gt;
OrangeRx R100 Satellite Receiver [http://www.hobbyking.com/hobbyking/store/__13418__OrangeRx_R100_Satellite_Receiver.html| R100SAT]. Works well, simple to connect, do not expect long range wonders however.&lt;br /&gt;
&lt;br /&gt;
==Spektrum 9645==&lt;br /&gt;
&lt;br /&gt;
[[Image:Spektrum_9645_satellite_receiver.jpg|thumb|left|Spektrum 9645 satellite receiver]]&lt;br /&gt;
&lt;br /&gt;
[http://www.spektrumrc.com/Products/Default.aspx?ProdID=SPM9645| Spektrum 9645 satellite receiver]. Works well, simple to connect. the DSMX mode is not used, it is used in the DSM2 mode, the receiver is backards compatible with that protocol.&lt;br /&gt;
&lt;br /&gt;
==Futaba FASST 7-channel receiver==&lt;br /&gt;
&lt;br /&gt;
[[Image:rs617fasst.jpg|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
* Pin 8 (upper right corner in picture) of the small IC on the right contains 5 PPM pulses and can go directly to paparazzi. Pulse 6 and 7 go directly to the servos. &lt;br /&gt;
* Best is to remove the resistors of one of the channels and connect a small wire to pin 8 to get the combined 5 pulses on the robust 1/10th inch header.&lt;br /&gt;
* Do not forget to use channel 3 (only failsafe channel) as mode switch with fail safe &amp;quot;throttle off&amp;quot; as mode 2.&lt;br /&gt;
&lt;br /&gt;
==Robbe RASST 7 &amp;amp; 8 channel receivers==&lt;br /&gt;
&lt;br /&gt;
Robbe has produced line of Futaba FASST compatible receivers that can output only PPM which results ablility to plug into autopilot without encoder.&lt;br /&gt;
* [http://www.robbe.de/empfaenger-r-6007-sp-2-4-g-rasst.html R6007SP 2,4 GHz RASST] - 7 channel, for small aircraft&lt;br /&gt;
* [http://www.robbe.de/empf-r6107sp-2-4-ghz-rasst.html R6107SP 2,4 GHz RASST] - 7 channel, &amp;gt;1000m range&lt;br /&gt;
* [http://www.robbe.de/empf-r6008sp-2-4-ghz-rasst.html R6008SP 2,4 GHz RASST] - 8 channel, upto 3000m range&lt;br /&gt;
&lt;br /&gt;
===Switch Assignment===&lt;br /&gt;
&lt;br /&gt;
To assign the three position switch to any other channel but channel 7 follow these steps:&lt;br /&gt;
# Set up aux2(refers to aux2 on rx not the switch on the tx. aka ch7) with its input selected as 3 pos switch.&lt;br /&gt;
# Set up this mix - Gear to Gear (Up=-100, Down=-100, Offset =0). This inhibits the gear switch.&lt;br /&gt;
# Set up another mix - Aux2 to Gear (Up=100, Down=100, Offset = 0).&lt;br /&gt;
Notes: &lt;br /&gt;
#Gear on a DX-7 Air is Channel 5 and AUX2 is CH7. Once again i am referring to the inputs which are labeled on the RX not what the switches are named on the TX. If your using a DX-7 heli please substitute the names for what the rx channels are named into this guide&lt;br /&gt;
# DX7 Heli the 3-pos switch is named &amp;quot;flight mode&amp;quot;&lt;br /&gt;
# DX7 Air the 3-pos switch is named &amp;quot;flaps&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Failsafe Setup===&lt;br /&gt;
&lt;br /&gt;
To set up the mode channel (3 pos switch) to default to auto2 if connection is lost between rx and tx follow these steps:&lt;br /&gt;
# Put 3 position Switch into AUTO2 Position&lt;br /&gt;
# Put in bind plug&lt;br /&gt;
# Power up&lt;br /&gt;
# REMOVE the bind plug&lt;br /&gt;
# Power up Tx while pushing bind button&lt;br /&gt;
# Wait until light becomes steady and not blinking (it may become steady right off but will then start blinking again so let it go at least 5 seconds)&lt;br /&gt;
&lt;br /&gt;
==Jeti Duplex 2.4 GHz Receiver Rsat 2==&lt;br /&gt;
&lt;br /&gt;
[[Image:Jeti_Duplex_Rsat2.jpg|thumb|left|Jeti RSat 2]]&lt;br /&gt;
* Outputs PPM, no soldering or PPM board required&lt;br /&gt;
* Only 12 gramms&lt;br /&gt;
* Full duplex technology provides safe radio link and redundant telemetry to standard paparazzi telemetry.&lt;br /&gt;
* [http://www.jetimodel.cz/index.php?page=products&amp;amp;old=0&amp;amp;category=4 Transmitter module] can be installed in any receiver.&lt;br /&gt;
&lt;br /&gt;
More information can be found a the [http://www.jetimodel.cz/index.php?page=product&amp;amp;id=165 Homepage of Jeti] and the [http://www.mikrokopter.de/ucwiki/JetiDuplex MikroKopter Wiki].&lt;br /&gt;
&lt;br /&gt;
=PCM Receivers=&lt;br /&gt;
&lt;br /&gt;
Most of the known PCM transmitter also can be set to PPM mode. If this is set, then the regular description for PPM applies since the PCM receiver like a JR/Gaupner SMC16 Scan can output PPM perfectly. &lt;br /&gt;
&lt;br /&gt;
However if setting up you transmitter to PPM out then the following applies:&lt;br /&gt;
&lt;br /&gt;
# Must use ppm encoder board. (See [[Get_Hardware|Get Hardware]] page for suppliers)&lt;br /&gt;
# At least one extra channel beyond those needed to control the servos and motor.&lt;br /&gt;
&lt;br /&gt;
= PPM Receivers =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
To use a 26/27/35/40/41/72/ MHz receiver a few requirements are necessary&lt;br /&gt;
&lt;br /&gt;
# At least one extra channel beyond those needed to control the servos and motor.&lt;br /&gt;
# A receiver or modified receiver which outputs a full ppm signal.&lt;br /&gt;
&lt;br /&gt;
== R/C Receiver Interface==&lt;br /&gt;
&lt;br /&gt;
All versions of the Paparazzi autopilot include a connector to interface with a standard R/C receiver for manual or semi-autonomous control during the testing and tuning phases.  Two interface options exist:&lt;br /&gt;
# Tap into the PPM signal running between the RF section and the servo driver of your receiver and route it to the Paparazzi.  Let the Paparazzi generate individual servo signals and connect all servos directly to the autopilot.  This method requires only 3 wires to the receiver (power and PPM), is compatible with all Paparazzi autopilots, and provides 8 manual R/C channels and the potential for more autonomous channels regardless of the capability of the R/C receiver.&lt;br /&gt;
# Cut the PPM trace and route it thru the autopilot and back to the receiver, using the servo driver IC on your R/C receiver to drive the servos.  This option requires 4 wires (Ground, PPM-in, PPM-out, Reset) and your receiver must have a supported servo driver IC.  This allows you to use the large servo connectors on your R/C receiver and does not require any modification to your servos or ESC but does require you to cut a trace on your R/C receiver and limits the number of servos to the capacity of your receiver.  Compatible with Classix and Tiny 1.1.&lt;br /&gt;
# Note that on the Classix the PPM_in pin is FOO2... &lt;br /&gt;
[[Image:RC_Receiver_Timing_Diagram.jpg|thumb|left|PPM Timing Diagram&amp;lt;small&amp;gt;Note 1: Exact value not critical. Depending on RC Transmitter type &amp;amp; Manufacturer.&amp;lt;br&amp;gt;Note 2: Depending on Transmitter number of Channels and t,,n,, durations.&amp;lt;br&amp;gt;Note 3: Not critical. Depending on Synchro detection method.&amp;lt;/small&amp;gt;]]&lt;br /&gt;
[[Image:RC_Receiver_Tiny.jpg|thumb|left|3-Wire setup, driving servos from the autopilot]]&lt;br /&gt;
[[Image:RC_Receiver_classix.jpg|thumb|left|4-Wire setup, driving servos from the R/C receiver]]&lt;br /&gt;
&lt;br /&gt;
=== Common demux chips ===&lt;br /&gt;
&lt;br /&gt;
Typical used chips are the cmos [http://www.doctronics.co.uk/4015.htm 4015] and [http://www.doctronics.co.uk/4017.htm 4017]. &lt;br /&gt;
&lt;br /&gt;
The 4015 uses either pin 1 or pin 9 for the clock and the input is on 7 and 15. The 4017 has just one shift register and has its clock input on pin 14 and the enable on pint 13.&lt;br /&gt;
&lt;br /&gt;
In most receivers you are after the clock; though some may be pulsed; in which case you need the enable. Note that the 4017 enable has inverted logic (low to be enabled) whereas the input on the 4015 can be either (typically high). If the enable pin is held low (4017) or if the input pin (4015) is held high always;e.g. connected to the ground or the Vcc - then it is fair to assume that the PPM signal is most propably on the clock input. &lt;br /&gt;
&lt;br /&gt;
== Recommended 35/40Mhz RC Receivers ==&lt;br /&gt;
&lt;br /&gt;
Note that there is information on modifying other receiver models at [http://mikrokopter.de/ucwiki/RC-Empf%C3%A4nger mikrokopter.de]. It's in German however the pictures contain most of the information or use google translate.&lt;br /&gt;
Shielded wire is recommended for receiver and autopilot connection, as unshielded one may cause noise in receiver. &lt;br /&gt;
&lt;br /&gt;
=== Futaba FP-R116FB 6 Channel FM 35MHz receiver ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Rc_fut_web.jpg|thumb|left|Wiring of a Futaba R136]]&lt;br /&gt;
*Orange wire is connected to PPM signal&lt;br /&gt;
*Red wire is connected to VCC&lt;br /&gt;
*Brown wire is connected to GND&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Futaba R136F 6 Channel FM receiver ===&lt;br /&gt;
&lt;br /&gt;
[[Image:rx_futaba136.jpg|thumb|left|Wiring of a Futaba R136]]&lt;br /&gt;
*41 MHz&lt;br /&gt;
*White wire is connected to PPM signal&lt;br /&gt;
&lt;br /&gt;
=== Futaba R168DF 8 Channel dual FM receiver ===&lt;br /&gt;
&lt;br /&gt;
[[Image:rx_futaba168df.jpg|thumb|left|Wiring of a Futaba R168DF]]&lt;br /&gt;
*35 MHz&lt;br /&gt;
*PPM wire is connected to 862 receiver pin on the board. VCC and GND is on the 8/B original position.&lt;br /&gt;
&lt;br /&gt;
=== ACT Micro-6 FM receiver ===&lt;br /&gt;
&lt;br /&gt;
[[Image:rx_act_micro-6.jpg|thumb|left|Wiring of a ACT Micro-6]]&lt;br /&gt;
*Available in 35 or 40 MHz versions&lt;br /&gt;
*White wire is connected to PPM signal&lt;br /&gt;
*[http://www.acteurope.com/Micro_6anl.pdf Datasheet (German)]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACT DSL-4top [http://www.mikrokopter.de/ucwiki/DSL4top mikrokopter.de] version ===&lt;br /&gt;
[[Image:DSL4top.jpg|thumb|left|DSL-4top mikrokopter.de version]]&lt;br /&gt;
* Special version for mikrokopter.de - Only available in their [https://www.mikrocontroller.com/index.php?main_page=product_info&amp;amp;products_id=215&amp;amp;zenid=8ce8bab70f3e9d684e01f724316d9690 shop]!&lt;br /&gt;
* '''Outputs PPM directly''' on the channel 1 connector!&lt;br /&gt;
* No soldering necessary&lt;br /&gt;
* ACT Lifetime warranty&lt;br /&gt;
* Sells for ~45 euro&lt;br /&gt;
&lt;br /&gt;
===Futaba R115F 5 Channel FM receiver===&lt;br /&gt;
[[Image:pprz_rx115.jpg|thumb|left|Wiring of a Futaba R115]]&lt;br /&gt;
*Available in 35 and 40 MHz versions&lt;br /&gt;
*White wire is connected to PPM signal&lt;br /&gt;
&lt;br /&gt;
===JETI REX 5 plus (no MPD) receiver===&lt;br /&gt;
[[Image:520_Jeti_5_plus.jpg|thumb|left|Wiring of a REX 5]]&lt;br /&gt;
&lt;br /&gt;
*Popular Czech made micro r/c receiver, available in 35 or 40 MHz versions&lt;br /&gt;
*´folded´ PCB design with parts inside, mostly inaccessable&lt;br /&gt;
*Small grey wire is connected to via with PPM signal&lt;br /&gt;
*Unusual connector used for testing, soldering recommended&lt;br /&gt;
*shielded wire recommended, this one taken from PC parts recycling (former soundcard to m/b connector cable)&lt;br /&gt;
*[http://www.jetimodel.cz/eng/navody_en/rex5_eng.pdf Datasheet (English)]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:DSC02414.JPG|thumb|left|other Layout of REX 5]]&lt;br /&gt;
&lt;br /&gt;
=== Receiver RX-7-SYNTH IPD receiver [http://www.multiplex-rc.de/hp/produkte/artikel_detail.jsp?lfdnr=55880&amp;amp;action=add2notice&amp;amp;qty=1&amp;amp;cachenepper=1227896925116 Multiplex-rc.de] ===&lt;br /&gt;
[[Image:RX-7-SYNTH_IPD.jpg|thumb|left|Wiring of RX-7-SYNTH IPD]]&lt;br /&gt;
&lt;br /&gt;
*Available in 35, 36 and 40 MHz versions&lt;br /&gt;
*A compact, high-quality 7-channel single-conversion FM / PPM IPD receiver&lt;br /&gt;
*Easy modification through connectors, see pictures&lt;br /&gt;
&lt;br /&gt;
=== Protech 5FM 35 mHz Receiver ====&lt;br /&gt;
&lt;br /&gt;
The low cost Protech '5FM' receiver makes use of an SMD version of the standard 74AHC164[http://www.ic-on-line.cn/IOL/datasheet/74ahct164_18057.pdf] 8 bit shift register; you are after PIN 1 of this chip. The circuit board has a testpad for just this pin at the top side of the circuit board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:protech-5fm.jpg|Figure 1. &amp;lt;br&amp;gt;Protech 5FM 35 mHZ Receiver, mark 2&lt;br /&gt;
Image:protech-5fm-pad.jpg|Figure 2. &amp;lt;br&amp;gt; PPM tap location for the Protech 5FM receiver, near the 74AHC164 shift register&lt;br /&gt;
Image:protech-5fm-scope.jpg|Figure 3.&amp;lt;br&amp;gt; Protech 5FM PPM signal - not very clean/digital&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two physical versions exist; the older one [http://www.protech.be/Manuals/PRO205manual%20web.pdf] and a newer one pictured (fig 1). It has been distributed by protech with various ready-to-fly planes; such as the Skyraider[http://www.modelbouwforum.nl/forums/beginners/50677-protech-skyraider.html].&lt;br /&gt;
&lt;br /&gt;
The solder/testpad you are after the one right next the 74x164 chip its pin 1. In this image it has a jellow wire soldered to it (the yellow wire at the top left is the normal antenna connector (fig 2). Note however that the signal is not very clean (1v/div) - which may cause issues - as shown in the above image (fig 3). &lt;br /&gt;
&lt;br /&gt;
This is further compunded by the relatively noisy electrical engines; which are not brushless. A ferrite coil does not seem to help enough - Papparazi and GPS loose sync often through Xbee. Replacing the engine by a brushless outrunnen resolve the issue completely.&lt;br /&gt;
&lt;br /&gt;
===Profi Penta 35 MHz===&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC00547.JPG]]&lt;br /&gt;
[[Image:DSC00545.JPG]]&lt;br /&gt;
&lt;br /&gt;
==72Mhz Receivers ==&lt;br /&gt;
&lt;br /&gt;
===Castle Creations [http://www.castlecreations.com/products/berg_ms4l.html Berg 4L]===&lt;br /&gt;
&lt;br /&gt;
[[Image:berg4L.jpg|thumb|Wiring of a Berg 4L]]&lt;br /&gt;
* Expect fantastic performance from these $40 USD parts but be warned that they are known to have unreliable crystal sockets and brittle antenna wire.  The ''Berg 7'' channel receiver should work equally well and is known to have a better crystal socket - note that either receiver will provide '''8 channels''' in manual R/C mode when used with Paparazzi.  Note: the rugged ''Berg 4'' cannot be modified, only the ''Berg 4L'' and ''Berg 7''.&lt;br /&gt;
To Modify a Berg4L, follow these instructions:&lt;br /&gt;
# Remove the shrink wrap. Use a good knife and be careful to not damage any of the components on the receiver. I would recommend that you cut on the sides (edge of the PCB) to be sure to avoid damaging the shielding&lt;br /&gt;
# Desolder the headers. We will not use them with tiny AP as the servos are connected directly to the AP. This is pretty easy to do when you have a hot air rework station. If you don't have one, your best bet is to cut the header off and remove the left over pins one by one with a regular iron. There is a piece of shielding material that is connected to one of the ground pins of the header. You need to remove it carefully from the header without damaging it and re-solder it to the gnd pad.&lt;br /&gt;
# You need to solder 3 wires to the receiver. Gnd, +5V and PPM. To locate the PPM signal, first locate the PIC micro controller close to the location of the headers. The PPM signal is on the corner pin closest to the corner of the receiver. Soldering a 28guage wire directly to the PIN isn't very difficult. For the power connection, use the pads that were used for the header. The outside pin is Gnd, the second pin is +5V. What I did is solder the wires on the pad going straight down, then I looped the 3 wires 360 degrees and glued them to the PCB with hot glue. This provides good strain relief.&lt;br /&gt;
# While you have the PCB in your hands, take the opportunity to remove the crystal connector and solder your crystal directly to the PCB for added reliability.&lt;br /&gt;
# I also used some hot glue to add more strain relief to the antenna&lt;br /&gt;
# Use some large shrink wrap to cover the entire receiver again&lt;br /&gt;
&lt;br /&gt;
===Hitec Electron 6 72MHz Reciever===&lt;br /&gt;
&lt;br /&gt;
This was written for MNAV from crossbow but is still usable with PPRZ.&lt;br /&gt;
&lt;br /&gt;
[[Image:Electron6mod.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Corona Synthesized Dual-Conv Receiver 8Ch===&lt;br /&gt;
[http://www.corona-rc.com/coproductshowE.asp?ArticleID=63 manual]&lt;br /&gt;
&lt;br /&gt;
This receiver is available in 27,35,36,40,72 mhz and a Synthesized receiver, meaning you do not need to change frequency crystals.&lt;br /&gt;
&lt;br /&gt;
How to modify for combined signal&lt;br /&gt;
&lt;br /&gt;
# Cut the 8th channel PWM output pin near the PCB.&lt;br /&gt;
# Connected a pin from the Atmel (see picture) to the 8th channel PWM signal. (optionally, weaving the wire through some holes on the board.) Make sure you have a fine tip on your soldering iron and a magnifying glass strapped to your head! &lt;br /&gt;
# Glue the wire down (CA works)&lt;br /&gt;
# Be sure to glue the pin that you cut in place (previously, being soldered to the board was holding the pin in place)&lt;br /&gt;
&lt;br /&gt;
It is maybe possible to reprogram the atmel with your own firmware. If you succeed in this plz add relevant info here.&lt;br /&gt;
&lt;br /&gt;
That pin provides a 1V to 2V signal, it works with the PPRZ, although its a bit gittery (the slew rate is not real good).&lt;br /&gt;
[[Image:Corona_Synthesized_Receiver_72Mhz_bottom.jpg|thumb]]&lt;br /&gt;
[[Image:Corona_Synthesized_Receiver_72Mhz_top.jpg|thumb]]&lt;br /&gt;
[[Image:Corona_Synthesized_Receiver_72Mhz_top_atmel.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=UHF Receivers=&lt;br /&gt;
&lt;br /&gt;
Note that in most countries an amateur radio license is required to use 433MHz UHF.&lt;br /&gt;
&lt;br /&gt;
==Scherrer UHF==&lt;br /&gt;
&lt;br /&gt;
[[Image:ScherrerUHF.jpg|thumb|left|Scherrer UHF Rx]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.webx.dk/rc/uhf-link3/uhf-link3.htm Scherrer UHF] is a high quality diversity radio control system. It has a PPM output and can be connected directely to Paparazzi. A ppm encoder board is not required. It has an RSSI output.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ImmersionRC EzUHF==&lt;br /&gt;
&lt;br /&gt;
[[Image:EzUHFTx.jpg|thumb|left|ImmersionRC Tx]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.immersionrc.com/products.htm ImmersionRC EzUHF] is a high quality diversity radio control system. The recent firmwares have a PPM output on Ch. 1, but this needs to be activated through the PC configuration software with the proper firmware loaded. It connects directly to EzOSD and the TrackR2 which enables RSSI monitoring and head tracking for FPV.&lt;br /&gt;
&lt;br /&gt;
Some people had issues with the exact timing, where the ROLL channel disappeared. If the radio has more than 6 channels, there may be methods to slave another channel to the roll channel (usually for the operation of dual ailerons). The ezuhf configuration file is using this method, where channel 1 is copied to channel 6. The EzUHF modules receive the PPM output stream from the radio and need to interpret it. For this reason, the ezuhf configuration file should be verified for proper functioning and you may find that channels are remapped to others with different purposes.&lt;br /&gt;
&lt;br /&gt;
Search &amp;quot;sander style&amp;quot; antennas for a way to build your own cheap, high-quality antennas for these rx modules and which provide a range well beyond the horizon.&lt;br /&gt;
&lt;br /&gt;
See [http://www.immersionrc.com/EzUHF.htm EzUHF manual+firmware] for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Get_Hardware&amp;diff=14679</id>
		<title>Get Hardware</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Get_Hardware&amp;diff=14679"/>
		<updated>2013-03-25T20:09:47Z</updated>

		<summary type="html">&lt;p&gt;Jkg: updated TRI URLs and images to Lisa/M v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an open-source project, all source code and hardware plans are [https://github.com/paparazzi/paparazzi-hardware freely available on GitHub] for anyone to produce, use, modify, and redistribute in accordance with the [http://www.gnu.org/licenses/gpl.txt GPL License Agreement] which requires only that the open-source nature of the project be maintained by all who redistribute it.&lt;br /&gt;
&lt;br /&gt;
We encourage the distribution of hardware for profit or otherwise and invite any users with paparazzi-related hardware to post links and purchasing information on this page.  Please use the [[Talk:Get_Hardware&amp;amp;action=edit|Discussion Tab]] to describe your experiences with any of these vendors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [http://aerofu.com [[image:aerofu_logo.png]]  Aerofu.com ] =&lt;br /&gt;
&lt;br /&gt;
Low cost Paparazzi hardware from Australia. &lt;br /&gt;
Licenced to export to [http://aerofu.com/index.php?main_page=page&amp;amp;id=2 33 countries], including Europe and North America. Recentry restocked with:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
[http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=30 Tiny] &lt;br /&gt;
and&lt;br /&gt;
[http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=31 TWOG]&lt;br /&gt;
autopilots.&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
Complete Kits ([http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=48 Tiny] or [http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=11&amp;amp;products_id=49 TWOG] based).&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
[http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=10&amp;amp;products_id=20 PPM Encoders] and [http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=8&amp;amp;products_id=44 IR Sensors] from the Paparazzi project.&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
Inexpensive [http://www.aerofu.com/index.php?main_page=product_info&amp;amp;cPath=7&amp;amp;products_id=12 uBlox LEA-5H GPS units].&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;various PCBs&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [http://www.ppzuav.com/ [[Image:Ppzuav.jpg]]] PPZUAV.com [[Image:All ppz autopilots med.jpg|thumb|400px|Paparazzi controllers]] =&lt;br /&gt;
&amp;lt;h2&amp;gt;Providing professionally assembled and tested hardware for your Paparazzi Projects since 2007&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
We want to help you get your Paparazzi project off the ground. We have helped hundreds of projects become successful. Confused what to buy? Just give us an email and we will help you decide ('''sales@ppzuav.com''').&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Whatever the part we make all the Paparazzi hardware available either via bare PCBs or fully assembled ready to program. TWOG, Tiny2.11, Umarim, YAPA2 we can make them all in any quantity you require.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not see what you need just ask. Please eMail with any questions or special requests before you place your orders. We return emails as quickly as possible.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Visit the PPZUAZ [https://store.ppzuav.com WebStore] to see the latest offerings.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;NEW BUNDLE-&amp;gt;:&amp;lt;/b&amp;gt;[https://store.ppzuav.com/osc/product_info.php?cPath=2&amp;amp;products_id=144 UmarimLite v2 Bundle]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [http://transition-robotics.com [[Image:Transition_Robotics_Logo.png|100px]] Transition Robotics Inc.] [[Image:LisaM_V2_0_TopView.JPG|thumb|Lisa/M V2.0 top view]][[Image:LisaM_V2_0_BottomView.JPG|thumb|Lisa/M V2.0 bottom view]] =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Transition Robotics Inc. is a young company developing new solutions for and with the Paparazzi UAV platform. Their core product is the [[Image:Quadshot_Logo.jpg|100px|link=http://thequadshot.com|Quadshot]], a VTOL transitioning aircraft.&lt;br /&gt;
&lt;br /&gt;
Beside the Quadshot itself they develop and provide hardware and software that is especially optimized for Paparazzi, such as the Lisa Autopilots, Aspirin IMUs and associated accessories.&lt;br /&gt;
&lt;br /&gt;
They have a shop on their [http://transition-robotics.com Quadshot product page].&lt;br /&gt;
&lt;br /&gt;
As of February 2012, Transition Robotics, Inc. has acquired all IP and Paparazzi related inventory from Joby Robotics. We are thankful to Joby Robotics for their important and faithful support of Paparazzi related hardware projects, and hope to carry on this tradition. Hardware formerly supplied by Joby Robotics may now be purchased at the [http://transition-robotics.com/collections/all Transition Robotics/Quadshot webstore.]&lt;br /&gt;
&lt;br /&gt;
The [http://transition-robotics.com/collections/all TRI/Quadshot Webstore] also stocks pre-crimped Molex Picoblade wires and connector housings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
&lt;br /&gt;
==[http://www.olimex.com/pcb/ Olimex]==&lt;br /&gt;
[[image:pcb-green.jpg|thumb|250px|Olimex PCBs]]&lt;br /&gt;
*Fast PCB Prototypes [http://www.olimex.com/pcb/ www.olimex.com/pcb]&lt;br /&gt;
*Development Boards [http://www.olimex.com/dev/index.html www.olimex.com/dev/]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[http://www.sparkfun.com Sparkfun]==&lt;br /&gt;
[[image:P1030095.jpg|thumb|250px|Sparkfun]]&lt;br /&gt;
Sparkfun is a great source of miscellaneous electronics like:&lt;br /&gt;
* Development boards&lt;br /&gt;
* GPS&lt;br /&gt;
* Gyros&lt;br /&gt;
* Accelerometers&lt;br /&gt;
* Pressure sensors&lt;br /&gt;
* Ultrasonic distance sensors&lt;br /&gt;
* Temperature/humidity sensors&lt;br /&gt;
* USB to Serial converters&lt;br /&gt;
* LEDs&lt;br /&gt;
* Etc.&lt;br /&gt;
They also have an inexpensive PCB service, [http://batchpcb.com/index.php/Products BatchPCB].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Sparkfun distributors in Europe'''&lt;br /&gt;
&lt;br /&gt;
Incomplete list.&lt;br /&gt;
*http://www.lipoly.de/index.php?main_page=index&amp;amp;cPath=880_883&amp;amp;language=en&lt;br /&gt;
*http://www.watterott.com/en/SparkFun&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [https://store.diydrones.com/ DIYDrones] ==&lt;br /&gt;
Mainly focused on ArduPilot hardware. But carries Paparazzi compatible Telemetry and sensor boards.&lt;br /&gt;
&lt;br /&gt;
'''DIYDrones distributors in Europe'''&lt;br /&gt;
*http://www.lipoly.de/index.php?main_page=index&amp;amp;cPath=880_1912 [DE]&lt;br /&gt;
*http://www.unmannedtechshop.co.uk/ [UK]&lt;br /&gt;
*http://www.buildyourowndrone.co.uk/ [UK]&lt;br /&gt;
&lt;br /&gt;
==u-Blox GPS receivers==&lt;br /&gt;
&lt;br /&gt;
There seems to be a few alternative source of u-Blox GPS out there. They are considerably cheaper then the samples u-Blox offers&lt;br /&gt;
&lt;br /&gt;
If you do order from any of them, please update this page with your feedback.&lt;br /&gt;
&lt;br /&gt;
Here's a few link worth exploring:&lt;br /&gt;
&lt;br /&gt;
*[http://www.navilock.de/produkte/gruppen/13/Boards_und_Module Navilock] (also available on [http://www.amazon.de Amazon.de] by searching for Navilock)&lt;br /&gt;
*http://www.rfdesign.co.za/pages/5645456/Products/GPS-Products/Antaris-4-Modules.asp (Also [http://www.rfdesign.co.za/pages/5645456/Products/GPS-Products/u-blox-5-Modules.asp u-blox 5] and [http://www.rfdesign.co.za/pages/5645456/Products/GPS-Products/u-blox-6-Modules.asp u-blox 6] modules avialable)&lt;br /&gt;
*http://www.comet.srl.ro/shop/info.html?ID=6195 ( Link error, you can find them in this list: http://www.comet.srl.ro/shop/statements.html?Type=MOD&amp;amp;Subtype=GPS )&lt;br /&gt;
*http://www.expedienttech.com/  ( Singapore )&lt;br /&gt;
*http://www.csgshop.com/category.php?id_category=16 (US UBLOX MAX-6Q)&lt;br /&gt;
&lt;br /&gt;
==Airspeed Sensors==&lt;br /&gt;
&lt;br /&gt;
Eagle Tree Systems makes a small standalone airspeed sensor that can be connected via i2c. They also sell pitot tubes standalone for other differential pressure sensors. For integration, please see [[Sensors/Airspeed]].&lt;br /&gt;
*[http://www.eagletreesystems.com/Standalone/standalone.htm Eagle Tree Systems] (Also available from a number of distributors)&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:User_Documentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DIGI XBee telemetry modules ==&lt;br /&gt;
For detailed shopping guide see [Modems]&lt;br /&gt;
*http://www.watterott.com/en/Digi (DE EU)&lt;br /&gt;
*https://store.diydrones.com/ (US See above for local distributors)&lt;br /&gt;
*http://unmannedtechshop.co.uk/UAV-Components/UAV-telemetry (UK)&lt;br /&gt;
*http://mouser.com/ (AU and other regions)&lt;br /&gt;
&lt;br /&gt;
= Old vendors =&lt;br /&gt;
&lt;br /&gt;
Here is a list of former paparazzi hardware vendors for reference. They were providing a great service to the Paparazzi community.&lt;br /&gt;
&lt;br /&gt;
* [http://chebuzz.com/paparazzi Chebuzz Pprz] had to move back to US and close his store, [http://aerofu.com/ AeroFu] is carrying on his business.&lt;br /&gt;
* [http://jobyrobotics.com Joby Robotics] stock and IP was bought by [http://transition-robotics.com Transition Robotics] that is carrying on their business.&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=14678</id>
		<title>Lisa/M v2.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=14678"/>
		<updated>2013-03-25T20:07:21Z</updated>

		<summary type="html">&lt;p&gt;Jkg: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; width: 15%&amp;quot;&amp;gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Autopilots&amp;lt;/categorytree&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 45%; overflow: hidden&amp;quot;&amp;gt;[[Image:LisaM_V2_0_TopView.JPG|right|500px|Lisa/M V2.0 top view]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisa/M is a small, general purpose autopilot designed with flexibility across multiple applications in mind. Small weight and size, with (optional) integrated [[AspirinIMU | Aspirin IMU]] and full size 0.1&amp;quot; servo headers make the Lisa/M suitable for both fixed-wing and rotorcraft vehicles. This autopilot is based on a STM32 processor for extensive peripheral connection and faster processing.&lt;br /&gt;
&lt;br /&gt;
A number of tutorials are being prepared for getting started with Lisa/M:&lt;br /&gt;
* [[Lisa/M/Tutorial/FixedWing|Fixedwing tutorial]]&lt;br /&gt;
* [[Lisa/M/Tutorial/RotorCraft|Rotorcraft tutorial]]&lt;br /&gt;
&lt;br /&gt;
Please join us in our quest to make the getting started information even more, eh... informative, by adjusting those pages with your own improvements.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Lisa/M is based on the 64 pins STM32F105RCT6 [http://www.st.com/internet/mcu/product/221023.jsp connectivity line family] processor featuring 64k of RAM and 256k of FLASH. All the pins are exposed, providing access to the complete set of the STM32 peripherals.&lt;br /&gt;
NOTE: This MCU is different from LISA/L. Lisa/L is based on the 64 pins STM32F103RE processor featuring 64k of RAM and 512k of FLASH, which is part of the [http://www.st.com/internet/mcu/product/164485.jsp high-density performance line family].&lt;br /&gt;
&lt;br /&gt;
* STM32 microcontroller [http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00220364.pdf STM32F105RCT6 datasheet] with 256kB flash and 64kB RAM&lt;br /&gt;
* Pressure sensor [http://www.bosch-sensortec.com/content/language1/html/3477.htm BMP085] (optional as of 08/2012)&lt;br /&gt;
* 7 x Analog input channels&lt;br /&gt;
* 3 x Generic digital in-/out-puts&lt;br /&gt;
* 2 x 3.3V TTL UART (5V tolerant)&lt;br /&gt;
* 8 x Servo PPM outputs (only 6 if second I2C (I2C1) bus in use)&lt;br /&gt;
* 1 x CAN bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/I2c I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C] bus (2 x when using only the first 6 Servo PPM outputs)&lt;br /&gt;
* 1 x Micro USB&lt;br /&gt;
* 4 x status LEDs with attached test point&lt;br /&gt;
* 10.8 grams (0.4 oz) (with Aspirin IMU mounted)&lt;br /&gt;
* 9.9 grams (0.35 oz) (without Aspirin IMU mounted)&lt;br /&gt;
* ~34mm x ~60mm x ~10mm&lt;br /&gt;
* 4 layers PCB design&lt;br /&gt;
&lt;br /&gt;
With mounted Aspirin IMU has the following additional sensors on board:&lt;br /&gt;
&lt;br /&gt;
* 3 Axis Gyroscope&lt;br /&gt;
* 3 Axis Accelerometer&lt;br /&gt;
* 3 Axis Magnetometer&lt;br /&gt;
* Barometer MS5611 (as of Aspirin v2.1)&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
'''Lisa/M has pads for the BMP085 pressure sensor. Lias/M 2 boards made before August 2012 had the BMP085 sensor mounted. Boards made after August 2012 do not have the sensor mounted as they are designed to be used with Aspirin 2.1 which has the new MS5611-01BA03 barometric pressure sensor.'''&lt;br /&gt;
&lt;br /&gt;
The drivers for the MS5611-01BA03 are work in progress and are available in the master branch of the Paparazzi codebase. All help with testing and improving the driver are very welcome!&lt;br /&gt;
&lt;br /&gt;
So, except for a GPS unit you have all necessary sensors for full attitude and altitude stabilization in an extremely small package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200px heights=200px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_TopView.JPG|Lisa/M V2.0 top view&lt;br /&gt;
Image:LisaM_V2_0_BottomView.JPG|Lisa/M V2.0 bottom view&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
Pins Name and Type are specified with respect to the Autopilot Board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:LisaM_V2_0_top_labeled.png|900px]]&lt;br /&gt;
[[Image:LisaM_warning_label.png|200px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SERVO1/2/3/4/5/6/7/8'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||SERVOx||OUT||Servo signal (PWM)(See Note 1 below)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|2||SV||PWR||Servo Bus Voltage Rail (conf w/ JP1)||style=&amp;quot;background:red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''JTAG'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||JTAG Debug Header (Pin 1 is +3V3)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2||V_IN||PWR||UART Voltage (conf w/ JP6 and JP7)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART3 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART3 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1/5'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||RX1||IN||USART1 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|5|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|6||RX5||IN||UART5 Serial Input (3.3V level)(Pullup to Pin 5 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''GPIO'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||PC12||I/O||GPIO, connected to PC12 (5V tolerant)||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|-&lt;br /&gt;
|5||TRST||I/O||JTAG_TRST (also connected to LED1 cathode)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC4||I/O||by default connected to LED_4 cathode (Remove LED/resistor to use as ADC4)||style=&amp;quot;background:magenta; color:white&amp;quot;|Magenta&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC6||I/O||by default connected to LED_3 cathode (Remove LED/resistor to use as ADC6)||style=&amp;quot;background:#FFA1B2; color:black&amp;quot;|Pink&lt;br /&gt;
|-&lt;br /&gt;
|6||BOOT0||I/O||BOOT0||style=&amp;quot;background:grey; color:black&amp;quot;|Grey&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''USB'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||USB (The USB connections are also available as 0.05&amp;quot; (1.27mm) through hole pads underneath the GPIO header)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C1 CAN'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| V_BATT||PWR||V_BATT Bus on autopilot, voltage divider for V_BAT_MEAS, (conf w/ JP2 to connect to V_IN)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| V_IN||PWR||Connected to autopilot voltage regulator inputs (conf w/ JP1, JP2 and JP3)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||CANL||I/O||CANL (5V level)||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|5||CANH||I/O||CANH (5V level)||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|6||SCL||I/O||SCL (5V level)(See Note 1 below)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|7||SDA||I/O||SDA (5V level)(See Note 1 below)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SPI1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||MOSI||Out||MOSI||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||MISO||In||MISO||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|5||SCK||Out||SCK||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|6||SS||Out||SS||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|7||DRDY||I/O||DRDY||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC1||In||ADC1 (or LED_6 if populated)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC2||In||ADC2 (or LED_7 if populated)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|6||ADC3||In||ADC3 (or LED_8 if populated)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||UART Voltage (conf w/ JP4 and JP5)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART2 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART2 Serial Input (3.3V level)('''NOT 5V TOLERANT''')(Pullup to Pin 2 voltage)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||SCL||I/O||SCL (3.3V level)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|4||SDA||I/O||SDA (3.3V level)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE 1''': SERVO7 and SERVO8 are directly connected to I2C1_SCL and I2C1_SDA lines. There one has to choose, either use SERVO7 and SERVO8 '''OR''' the use ''second'' I2C bus (I2C1) if that one needs to be used for whatever reason. To use the servos 7 and 8 just set the  &amp;lt;define name=&amp;quot;USE_SERVOS_7AND8&amp;quot;/&amp;gt;  in your airframe file and you are good to go. For this to work one must make sure to have the latest Paparazzi sourcecode.&lt;br /&gt;
&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Lisa/M 2.0 has 5 LEDS (+1 power LED). There are 3 additional LEDs (LED_6, LED_7, LED_8) that are not populated by default (in favor of using ADC1-3 on the ANALOG1 connector).&lt;br /&gt;
By default the LEDs are use for:&lt;br /&gt;
; LED_1, red: ''SYS_TIME_LED'': blinks with 1Hz&lt;br /&gt;
; LED_2, green : ''AHRS_ALIGNER_LED'': blinks until the AHRS is aligned (gyro bias initilalized) and then stays on&lt;br /&gt;
; LED_3, green : ''GPS_LED'': blinking if trying to get a fix, on if 3D fix&lt;br /&gt;
; LED_4, red : ''RADIO_CONTROL_LED'': on if RC signal is ok&lt;br /&gt;
; LED_5, green : not set to anything by default&lt;br /&gt;
&lt;br /&gt;
=== Jumper Configuration ===&lt;br /&gt;
There are a number of jumpers on Lisa/M used to configure voltage levels and power input.&lt;br /&gt;
&lt;br /&gt;
The default configuration is UART3 VCC at V_IN, UART1/2/5 VCC at +3V3, with the V_SERVO servo voltage rail NOT connected to the autopilot V_IN rail, allowing one to power the autopilot and servos separately. The +5V regulator is NOT bypassed, allowing a regulated +5V on listed headers and for the CAN transceiver and I2C level shifter. The V_BATT connector is NOT connected to V_IN, so one can attach a battery voltage to the V_BATT pin to measure the battery voltage, if so desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_top_jumpers_and_leds.png | Lisa/M v2.0 Top Jumpers and LEDs&lt;br /&gt;
Image:LisaM_V2_0_bottom_jumpers.png | Lisa/M v2.0 Bottom Jumpers&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Power Jumper Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP1||SERVO_BUS to V_IN||OPEN||Connects servo header voltage rail SERVO_BUS to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP2||V_BATT to V_IN||OPEN||Connects I2C1/CAN rail V_BATT to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP3||V_IN to +5V||OPEN||Connects autopilot input voltage V_IN rail to autopilot +5V rail, bypassing onboard 5V supply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP6||UART3_VCC to V_IN||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART3 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP7||UART3_VCC to +3V3||OPEN||Connects UART3 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting!!!'''&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP6 AND JP7 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP4||UART2_VCC to V_IN||OPEN||Connects UART2 connector VCC to autopilot input voltage V_IN rail '''SEE WARNING BELOW'''&lt;br /&gt;
|-&lt;br /&gt;
|JP5||UART2_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART2 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART2 RX is NOT 5V TOLERANT. Thus, while possible to connect UART2_VCC to V_IN, DO NOT ATTEMPT THIS. Only use JP5 (the default).&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP4 AND JP5 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1 and UART5 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP8||UART1&amp;amp;5_VCC to V_IN||OPEN||Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP9||UART1&amp;amp;5_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART1 and UART5 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
There are additional jumpers on the board for expert or developer configurations, please see [[Lisa/M_v20#Schematic|schematic]] and [[Lisa/M_v20#Downloads|layout]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Powering the Board ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_warning_label.png|right|200px]]&lt;br /&gt;
&lt;br /&gt;
The 3.3V regulator on Lisa/M is a [http://www.micrel.com/page.do?page=/product-info/products/mic5209.shtml MIC5209-3.3YM] capable of delivering up to 500mA. While it is possible to power this regulator with up to 16V, '''DO NOT''' do this. By default, the UART3 RX pin is pulled up to the input voltage V_IN. For this reason, 5V is the maximum input voltage. Note that the UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting. If one desires to have V_IN at a higher voltage, the jumpers should be adjusted accordingly. As noted, this regulator can handle up to 16V, though experience has shown that this regulator can become very hot in operation with high input voltages, resulting in potential thermal shutdown while in flight. Depending on the expected current draw, it is best to power this regulator with a lower voltage. 5V is the perfect choice. &lt;br /&gt;
&lt;br /&gt;
The onboard 5V regulator on Lisa/M is a [http://www.national.com/pf/LP/LP2992.html LP2992], a low-noise, low-dropout linear regulator capable of delivering up to 250mA. This regulator can be bypassed with JP3, connecting the autopilot V_IN bus directly to the autopilot 5V bus if, for example, one is using an external 5V regulated supply, and a higher current is needed. Unless external use of 5V is required on the ANALOG1 and ANALOG2 headers, the only 5V usage onboard is for the CAN transceiver and the I2C1 level shifter.&lt;br /&gt;
&lt;br /&gt;
When measuring the supply voltage of a battery with the V_BATT pin (could be connected to V_IN through JP2), it is important to note the maximum voltage limit. The voltage divider on the board for measuring with a 3.3V ADC is --'''V_BAT'''--/\/\'''10k'''/\/\--'''V_BAT_MEAS'''--/\/\'''2k2'''/\/\--'''GND'''--. This means that the maximum allowable voltage on V_BATT is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;V\_BAT_{max} = 3.3V*\frac{10k}{2.2k} = 15V&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a higher voltage measurement is desired, another voltage divider is required off-board. Alternatively, one could modify the existing voltage divider (e.g. change 10k resistor to 22k to get 33V maximum). When checking if voltage exceeds the maximum, make sure to consider maximum battery voltage, not nominal voltage (e.g. 4.22V or so for a single lithium cell, not 3.7V nominal, so the maximum number of cells in series is 3, like a 3S LiPo pack).&lt;br /&gt;
&lt;br /&gt;
== Schematic ==&lt;br /&gt;
&amp;lt;gallery widths=250px heights=168px&amp;gt;&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_1.png | LisaM V2.0 Schematic Sheet 1/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_2.png | LisaM V2.0 Schematic Sheet 2/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_3.png | LisaM V2.0 Schematic Sheet 3/3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples of Airborne Equipment Electrical Connections ==&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and PWM Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_v2_0_wiring_quadrocopter_spektrum_pwmesc.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESCs have a battery eliminator circuit (BEC) function and provide 5 volts on their 5V pins. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
When using cheap ATMega or SiLabs-based PWM motor controllers consider replacing their firmware with either [https://github.com/sim-/tgy Simon Kirby] or [https://github.com/bitdump/BLHeli BLHeli] firmware respectively to get useful performance of your multicopter! You can find a firmware compatibility list [https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZRlE here].&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and I2C Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_quadrocopter_spektrum_i2c_esc_wiring.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This diagram &amp;quot;should&amp;quot; be the same for AscTec as well as Mikrokopter motor controller based airframes.&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers and Elevons Only ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum_elevons.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESC has a BEC and provides 5 volts on its 5V pin. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESC has a BEC and provides 5 volts on its 5V pin. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
=== Transitioning [http://wiki.thequadshot.com Quadshot] Using Spektrum Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_quadshot_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
The ESCs have BECs and provide 5 volts on their 5V pins. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
Still need: Large Fixed-wing with advanced power system and/or IC engine, PPM example&lt;br /&gt;
&lt;br /&gt;
== R/C Receivers ==&lt;br /&gt;
&lt;br /&gt;
One can use Spektrum DSM2 or compatible receivers as well as traditional PPM receivers.  It is even possible to connect two Spectrum or compatible satellite receivers for better redundancy or to improve RC signal reception. Connecting a RC receiver for flying your aircraft in manual mode during setup and test phase is 99% of the cases a must. Therefore the Paparazzi team made it easy to connect one.&lt;br /&gt;
&lt;br /&gt;
===  Using a Spectrum DSM receiver ===&lt;br /&gt;
&lt;br /&gt;
==== Connecting ====&lt;br /&gt;
&lt;br /&gt;
Connect the out signal to the RX pin of UART1 , the GND to GND or receiver and + to the + of Spectrum receiver. Make sure the voltage on the AP board UARD1 pins can be handled by your Spectrum DSM or compatible receiver.&lt;br /&gt;
&lt;br /&gt;
==== Binding ====&lt;br /&gt;
&lt;br /&gt;
It is important to bind your Spectrum DSM receiver with your transmitter '''via your Lisa board''', not in any other way. The way to do this is via fiddly small molex pins. It is advised to make a small bind plug out of a molex connector for this purpose. Before you start make sure you have your airframe configuration already uploaded either via USB or a JTAG cable.&lt;br /&gt;
&lt;br /&gt;
The procedure:&lt;br /&gt;
&lt;br /&gt;
# On the connector ANALOG1 have a wire between the GND pin ADC1, located in the middle of the board&lt;br /&gt;
# Power up your autopilot board&lt;br /&gt;
# Hold the bind button on your '''transmitter''', while '''keeping it pressed''' switch on your transmitter&lt;br /&gt;
#:Wait.. all light of receiver blink then go steady&lt;br /&gt;
# Let go of your transmitter bind button&lt;br /&gt;
# Power off your Lisa Board&lt;br /&gt;
# remove the wire between GND and ADC1 pins&lt;br /&gt;
# Repower your board, if you have servos connected and wiggle the RC transmitter sticks some servos should move&lt;br /&gt;
&lt;br /&gt;
That all, you are done. Only needs to be done '''once''' for your receiver.&lt;br /&gt;
&lt;br /&gt;
===  Using a PPM receiver ===&lt;br /&gt;
&lt;br /&gt;
Using a PPM receiver, a so called '''PPM sum stream''' input is possible. [[RC_Receivers_and_Radios#PPM_Based_Systems | To make it work, you need a PPM sum stream out capable receiver. Find out more following this link]]  &lt;br /&gt;
&lt;br /&gt;
==== Connecting ====&lt;br /&gt;
&lt;br /&gt;
Connect the PPM out signal to the RX pin of UART1.&lt;br /&gt;
&lt;br /&gt;
Make sure put this in your airframe file in your AP target section.&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;ppm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;UART1_RX&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/subsystem&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
===== Alternative =====&lt;br /&gt;
&lt;br /&gt;
However if in the case you want to use the RX or UART1 for something else, there is an option to connect the receiver to a servo pin. Yes, that's right, a servo connector is used for receiver PPM stream '''input'''.  The default pin number to capture the PPM sum stream is via servo connector six(6)&lt;br /&gt;
&lt;br /&gt;
If you connect the PPM ou capable receiver that way make sure to put this in your airframe file in your AP target section:&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;ppm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;SERVO6&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/subsystem&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
If you do not have or cannot modify a receiver to a ''PPM out'' able receiver, a [[PPM_Encoder | PPM encoder board]] can be used to avoid opening your receiver for PPM out modification.&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== UART I/O ===&lt;br /&gt;
&lt;br /&gt;
UART pins can also be used as general purpose I/O, this might come in handy in case all other inputs or your AP board are in use.&lt;br /&gt;
&lt;br /&gt;
===  USB as UART1TX + hardware flow control===&lt;br /&gt;
&lt;br /&gt;
[[File:Lisam-usb-uart1.jpg]]&lt;br /&gt;
&lt;br /&gt;
The USB_VBUS on the Lisa/M 2.0 can be used as UART1 TX. To do this, a diode has to be removed. Make sure to include a series resistor of 100-3000 Ohm to protect the microcontroller from overcurrents. The 2nd and 3th pin of the USB pads are CTS and RTS respactively. It is recommended to include a series resistor in the RTS line, as this is an outgoing line. &lt;br /&gt;
&lt;br /&gt;
If you want to enable flow control in the software, but don't want to use flow control when no cable is connected to the CTS/RTS, a pulldown resistor of 10 kOhm has to be added between the CTS and the GND. If you do this, take care when connecting UART devices that have a large series resistor in their RTS line. The combination of the pulldown resistor and the series resistor might cause the high-level voltage to drop under the high-level treshold of the microcontroller, causing strange behaviour.&lt;br /&gt;
&lt;br /&gt;
For Example the RTS , mostly a purple wire, is the '''pin 10''' on the Xtend module when set in the module with Hardware flow control (use X-CTU)&lt;br /&gt;
CTS, most blue, on pin 9 of the Xtend&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:Lisam-diode.JPG | Remove this diode. After removing this diode you can not power the board via USB anymore.&lt;br /&gt;
Image:Lisam-gpio-usb.JPG | Take care of the small distance between the GPIO pins and the USB pads.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCB ==&lt;br /&gt;
&lt;br /&gt;
=== Gerber &amp;amp; Drill Files  ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 gerber &amp;amp; drill files (zip)''''' ''[[Lisa/M_v2.0#Get the design|Get the design]]''&lt;br /&gt;
&lt;br /&gt;
== Assembly ==&lt;br /&gt;
&lt;br /&gt;
To create and assemble a board oneself is possible. It ake some skills ofcouse. In case you wan to follow that path you need the desing. You came to the right place here is the info to get the needed files;&lt;br /&gt;
&lt;br /&gt;
===Components Layout===&lt;br /&gt;
&lt;br /&gt;
''[[Lisa/M_v2.0#Get the design|Get the design]]''&lt;br /&gt;
&lt;br /&gt;
Need some top and bottom of board images and line drawings here.&lt;br /&gt;
&lt;br /&gt;
=== Bill Of Material ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 Bill Of Material (zipped .xls file)''''' ''[[Lisa/M_v2.0#Get the design|Get the design]]''&lt;br /&gt;
&lt;br /&gt;
== PCB and assembled boards suppliers ==&lt;br /&gt;
&lt;br /&gt;
To difficult to creat your own AP board, understandable, thus pre made board available via [[Get_Hardware|Get Hardware]] page... hopefully :)&lt;br /&gt;
&lt;br /&gt;
== Mechanical Dimensions ==&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_V2_0_top_mechanical.png|500px|Lisa/M v2.0 Mechanical Dimensions]]&lt;br /&gt;
&lt;br /&gt;
The overall height of the board including the servo connectors is 10mm. Note that the overall length includes the USB connector. The mounting holes are nominal 2mm diameter (with a bit of clearance).&lt;br /&gt;
&lt;br /&gt;
== Get the design ==&lt;br /&gt;
&lt;br /&gt;
'''Source files'''&lt;br /&gt;
:*download available on GitHub: ''[https://github.com/paparazzi/paparazzi-hardware/tree/master/controller/lisa_m/v2.0 Lisa/M v2.0 Cadsoft Eagle 6 Design]''&lt;br /&gt;
'''Gerber &amp;amp; Drill files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need generated gerbers and drill files&lt;br /&gt;
'''Assembly files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Components layouts (pdf)&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Bill Of Material&lt;br /&gt;
&lt;br /&gt;
== Uploading new software ==&lt;br /&gt;
New onboard software for the Lisa/M v2.0 can uploaded by connecting your PC via a micro-USB port to the autopilot board. For this the board need to contain the [[Luftboot]] bootloader. All Lisa/M 2.0 from Transition Robotics Inc. come with luftboot already in the board.&lt;br /&gt;
&lt;br /&gt;
An alternative to get your firmware in the board is by using a JTAG connector connected via the 10-pin Samtec connector that is available on the board.&lt;br /&gt;
&lt;br /&gt;
See the [[FirmwareFlashing]] page for an overview of different methods to upload new software to your autopilot.&lt;br /&gt;
&lt;br /&gt;
=== Using luftboot ===&lt;br /&gt;
'''This is the default FLASH_MODE for Lisa/M v2.0''', it could be explicitly selected by adding&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;DFU&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
to the firmware section of your airframe file. Make sure to set Lisa/M 2.0 as it's target board.&lt;br /&gt;
&lt;br /&gt;
Once USB is plugged in, the board automatically goes to bootloader mode and the status LEDs cycle up and down:&lt;br /&gt;
&lt;br /&gt;
[[File:Luftboot.gif|320px]]&lt;br /&gt;
&lt;br /&gt;
If you have trouble entering the bootloader mode or want to upload/update the bootloader itself, see the [[Luftboot]] page.&lt;br /&gt;
&lt;br /&gt;
=== Using JTAG ===&lt;br /&gt;
You still can use a [[JTAG|JTAG adapter]] for [[FirmwareFlashing#JTAG|flashing]] and [[DevGuide/JTAG-Debug|debugging]] your paparazzi firmware. To use [[FirmwareFlashing#JTAG|JTAG flashing]] configure the ''FLASH_MODE'' in your firmware section:&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;JTAG&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Using JTAG will not overwrite the bootloader by default. To overwrite the luftboot bootloader configure&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;NO_LUFTBOOT&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then press upload as normal...&lt;br /&gt;
&lt;br /&gt;
=== Serial Firmware Upload ===&lt;br /&gt;
Firmware upload using the factory integrated bootloader can be useful e.g. if you have overwritten [[Luftboot]] accidentally and don´t have access to [[JTAG]].&amp;lt;br/&amp;gt;&lt;br /&gt;
Either set the flash mode in the target section of the airframe configuration:&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;SERIAL&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
or add it to the commandline invocation:&lt;br /&gt;
 make AIRCRAFT=&amp;lt;aircraftname&amp;gt; ap.upload FLASH_MODE=SERIAL&lt;br /&gt;
&lt;br /&gt;
Due to hardware constraints, the board has to be modified to make use of the bootloader, which is only accessible on UART1:&lt;br /&gt;
# Diode D3 has to be removed (the bigger black brick next to the USB connector). Attention, no more powering via USB after that.&lt;br /&gt;
# BOOT1 has to be set to GND by connecting ACC_DRDY(unused) to GND at the Aspirin pads&lt;br /&gt;
&lt;br /&gt;
Now a boot sequence works as follows:&lt;br /&gt;
#BOOT1 has to be set to 3.3V by use of a jumper cable&lt;br /&gt;
#Connect a 3,3V serial cable (FTDI, MAX232...) to UART1, the TX pin is USB_VBUS&lt;br /&gt;
#Power the board and activate the bootloader program&lt;br /&gt;
&lt;br /&gt;
== Detailed Hardware Revision History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes Between LISA v1.1 and v2.0 ===&lt;br /&gt;
&lt;br /&gt;
* Lots of silkscreen improvements&lt;br /&gt;
* Added attributes to all parts to make the usage of bom-ex ulp possible.&lt;br /&gt;
* Improved routing to allow teardropping&lt;br /&gt;
* Fixed stm32f1, f2 and f4 compatibility circuit. (has to jump to ground not to 3v3)&lt;br /&gt;
* Connected existing UART RX pullups to the respective connector power pins instead of 3v3. To prevent connecting 5V over IO pin to the 3v3 power rail.&lt;br /&gt;
* Added pullups on all UART RX lines to prevent undesired floatation.&lt;br /&gt;
* LED's are connected to 3v3 now. To make sure we don't have an issue with voltage tolerance on the gpio pins.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Hardware Change Requests ==&lt;br /&gt;
&lt;br /&gt;
If you have a Lisa/M 2.0 and in the process of using it you come up with something you find annoying, dangerous, or restricting, add your hardware update requests here. Better still, modify the Lisa schematics yourself and show your new improvements if you are skilled enough to do this.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace BMP085 with MS5611 (the MS5611 seems to be better in performance then the BMP but it is more expensive and seems to be more difficult to obtain. &lt;br /&gt;
** A: Using a MS5611 is possible through using a Aspirin v2.1 board&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace 7 Pin CAN with molex with something less risky to be inserted in 7 Pin SPI in relation to powering the board via CAN molex.&lt;br /&gt;
&lt;br /&gt;
* REQ: Separate spot for external power if powered via separate battery. Realizing we can via Servo ports by Bridge J1 but still like to measure board voltage then and have a way to add power without mistakenly insert I2CCAN Molex conector into SPI Molex on board connector. Thus a separate CAN and Power plug. Power on regular four pin molex with GND, V+5, , V_BATT, V_I (Current sense). Option to have thicker wire to be soldered to the board, for power hungry setups and other issues connectors for power are not a good idea.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace Aspirin IMU board with InvenSense MPU-9150 and bring the MS5611 back onto the Lisa/M board to reduce footprint, mass, and manufacturing cost once the 9150 becomes readily available(if at al with SPI) and is tested to perform well.&lt;br /&gt;
[[Category:Lisa]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lia&amp;diff=14677</id>
		<title>Lia</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lia&amp;diff=14677"/>
		<updated>2013-03-25T20:02:27Z</updated>

		<summary type="html">&lt;p&gt;Jkg: corrected CAN tranciever info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Lia''' is a lower cost version of [[Lisa/M]] first developed for inclusion with the [http://wiki.thequadshot.com/wiki/The_Mocha Quadshot Mocha].&lt;br /&gt;
&lt;br /&gt;
== Differences from Lisa/M ==&lt;br /&gt;
&lt;br /&gt;
* 0.1&amp;quot; pitch connectors instead of molex picoblade&lt;br /&gt;
* No CAN transceiver (footprint still present just not populated) on [http://www.transition-robotics.com Transition Robotics]serial numbers LI1-001 through LI1-200 (populated on serial numbers ≥LI1-201)&lt;br /&gt;
* No I2C2 level shifter (footprint still present just not populated)&lt;br /&gt;
* No 5V voltage regulator (footprint still present just not populated)&lt;br /&gt;
* No JTAG connector (footprint still present just not populated)&lt;br /&gt;
* Added servo power inline resistors (by default 0 ohm but can be changed to higher value for balancing the linear voltage regulators of the motor controllers)&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Lia_1.1_top.jpg|Lia V1.1 top side&lt;br /&gt;
Image:Lia_1.1_bottom.jpg|Lia V1.1 bottom side&lt;br /&gt;
Image:Lia_1.1_aspirin_bottom.jpg|Lia V1.1 bottom side with Aspirin 2.1 nomag nobaro placed.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jumper Configuration ==&lt;br /&gt;
There are a number of jumpers on Lia used to configure voltage levels and power input. Their locations and functions are identical to those on the Lisa/M v2.0.&amp;lt;br/&amp;gt;&lt;br /&gt;
See the [[Lisa/M_v2.0#Jumper_Configuration|Jumper Configuration section on the Lisa/M v2.0 page]].&lt;br /&gt;
&lt;br /&gt;
Note that the default states of JP8 and JP9 are reversed with respect to the defaults of Lisa/M v2.0; that is:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Lia UART1 and UART5 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP8||UART1&amp;amp;5_VCC to V_IN||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP9||UART1&amp;amp;5_VCC to +3V3||OPEN||Connects UART1 and UART5 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!'''&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lia&amp;diff=14672</id>
		<title>Lia</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lia&amp;diff=14672"/>
		<updated>2013-03-23T00:19:01Z</updated>

		<summary type="html">&lt;p&gt;Jkg: re-added differing default jumper config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Lia''' is a lower cost version of [[Lisa/M]] first developed for inclusion with the [http://wiki.thequadshot.com/wiki/The_Mocha Quadshot Mocha].&lt;br /&gt;
&lt;br /&gt;
== Differences from Lisa/M ==&lt;br /&gt;
&lt;br /&gt;
* 0.1&amp;quot; pitch connectors instead of molex picoblade&lt;br /&gt;
* No CAN transceiver (footprint still present just not populated)&lt;br /&gt;
* No I2C2 level shifter (footprint still present just not populated)&lt;br /&gt;
* No 5V voltage regulator (footprint still present just not populated)&lt;br /&gt;
* No JTAG connector (footprint still present just not populated)&lt;br /&gt;
* Added servo power inline resistors (by default 0 ohm but can be changed to higher value for balancing the linear voltage regulators of the motor controllers)&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Lia_1.1_top.jpg|Lia V1.1 top side&lt;br /&gt;
Image:Lia_1.1_bottom.jpg|Lia V1.1 bottom side&lt;br /&gt;
Image:Lia_1.1_aspirin_bottom.jpg|Lia V1.1 bottom side with Aspirin 2.1 nomag nobaro placed.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jumper Configuration ==&lt;br /&gt;
There are a number of jumpers on Lia used to configure voltage levels and power input. Their locations and functions are identical to those on the Lisa/M v2.0.&amp;lt;br/&amp;gt;&lt;br /&gt;
See the [[Lisa/M_v2.0#Jumper_Configuration|Jumper Configuration section on the Lisa/M v2.0 page]].&lt;br /&gt;
&lt;br /&gt;
Note that the default states of JP8 and JP9 are reversed with respect to the defaults of Lisa/M v2.0; that is:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Lia UART1 and UART5 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP8||UART1&amp;amp;5_VCC to V_IN||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP9||UART1&amp;amp;5_VCC to +3V3||OPEN||Connects UART1 and UART5 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!'''&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=JTAG&amp;diff=14568</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=JTAG&amp;diff=14568"/>
		<updated>2013-03-12T19:08:33Z</updated>

		<summary type="html">&lt;p&gt;Jkg: grammar/spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
A JTAG interface is designed for on-chip debugging. It is used to program that do not have a means to upload software via USB already. For short; if you want to upload your own software or want to do serious paparazzi development work, the you need a cable like this.&lt;br /&gt;
&lt;br /&gt;
=JTAG Cable overview=&lt;br /&gt;
There are multiple Paparazzi-compatible devices available that support JTAG. Below you find a list of JTAG devices that you can use in combination with e.g. a Paparazzi Lisa/M board. &lt;br /&gt;
&lt;br /&gt;
== FLOSS JTAG ==&lt;br /&gt;
 &lt;br /&gt;
The FLOSS JTAG is based on an FTDI chip that allows two simultaneous USB connections, which means that FLOSS JTAG allows JTAG and UART/COM connections.&lt;br /&gt;
&lt;br /&gt;
Let's take a look at upper side of the board. It contains JTAG connector (which is connected on photo) and two sets of RX/TX LEDs for JTAG and UART/COM interface separately. The JTAG connector is 2x5 pins, 0.05-inch pitch, and is compatible with the Samtec FFSD-05-D-06.00-01-N-RW-R ribbon cable.&lt;br /&gt;
&lt;br /&gt;
[[Image:Jtag-up.jpg]]&lt;br /&gt;
&lt;br /&gt;
On the other side of the board there is 4 pin UART/COM connector, which contains (from top to bottom in the image below): Ground (black), RX (orange), TX (yellow), and +5V (red)&lt;br /&gt;
&lt;br /&gt;
[[Image:Jtag-down.jpg]]&lt;br /&gt;
&lt;br /&gt;
Usage of board is pretty simple: JTAG can be used to upload firmware into the board and/or repair board with broken bootloader, and UART/COM interfaced can be used to make &amp;quot;COM port style&amp;quot; connection to the board. COM connection can be used for example for telemetry debug.&lt;br /&gt;
&lt;br /&gt;
More info available on the [http://randomprojects.org/wiki/Floss-JTAG randomprojects.org wiki].&lt;br /&gt;
&lt;br /&gt;
== Black Magic Probe ==&lt;br /&gt;
&lt;br /&gt;
[[Image:BMPM_1_top.jpg|500x500px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:BMPM_1_bottom.jpg|500x500px]]&lt;br /&gt;
&lt;br /&gt;
Full info about the Black Magic Probe is available at the [http://www.blacksphere.co.nz/main/blackmagic Black Sphere Technology website].&lt;br /&gt;
&lt;br /&gt;
To use Black Magic Probe instead of FLOSS-JTAG or Luftboot, append the following string to the upload command:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
 FLASH_MODE=JTAG BMP_PORT=/dev/ttyACM0&lt;br /&gt;
On Mac OS:&lt;br /&gt;
 FLASH_MODE=JTAG BMP_PORT=/dev/cu.usbmodem&amp;lt;serial&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if this all makes no sense and you need another way to upload take a look at this section http://paparazzi.enac.fr/wiki/Lisa/M_v2.0#Using_JTAG&lt;br /&gt;
&lt;br /&gt;
=== Benefits ===&lt;br /&gt;
&lt;br /&gt;
There are good reasons to use the Black Magic Probe Mini instead of FLOSS-JTAG:&lt;br /&gt;
&lt;br /&gt;
*Lower cost&lt;br /&gt;
*No need for OpenOCD as BMPM has a built in GDB server&lt;br /&gt;
*Orders of magnitude faster as all the high speed protocol logic happens on the built-in STM32&lt;br /&gt;
*Supports Serial Wire Debug (SWD)&lt;br /&gt;
*Supports tracing using the SWD trace pin&lt;br /&gt;
*No need for loading and unloading of FTDI drivers on Mac OS X&lt;br /&gt;
&lt;br /&gt;
===How to use Debugging features===&lt;br /&gt;
&lt;br /&gt;
A page describing on how to start debugging using the BlackMagic probe cable can be found here JTAG: [[DevGuide/JTAG-Debug]]&lt;br /&gt;
&lt;br /&gt;
===Upgrade BMP firmware===&lt;br /&gt;
&lt;br /&gt;
To upgrade the brain of your Black Magic Probe, a.k.a. its firmware, use these commands on your command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://blackmagicdebug.git.sourceforge.net/gitroot/blackmagicdebug/blackmagicdebug&lt;br /&gt;
 $ cd blackmagicdebug/src&lt;br /&gt;
 $ make CROSS_COMPILE=~/sat/bin/arm-none-eabi-&lt;br /&gt;
  ../scripts/stm32_mem.py blackmagic.bin&lt;br /&gt;
&lt;br /&gt;
== FT2232 Dev Board ==&lt;br /&gt;
&lt;br /&gt;
Use ftdi prog to change the Description String into: FLOSS-JTAG&lt;br /&gt;
&lt;br /&gt;
[[File:AlternativeFlossJtag.png]]&lt;br /&gt;
&lt;br /&gt;
= Related articles =&lt;br /&gt;
* [[DevGuide/JTAG-Debug]] - Developer's guide JTAG debugging&lt;br /&gt;
* [[Dev/Debugging]] - General debugging information&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:Software]] [[Category:Developer_Documentation]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
(*(oo)*), ,~&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=JTAG&amp;diff=14426</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=JTAG&amp;diff=14426"/>
		<updated>2013-02-13T22:21:17Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added verbiage to make it clearer which wire is which&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
A JTAG interface is designed for on-chip debugging. It is used to program that do not have a means to upload software via USB already. For short; if you want to upload your own software or want to do serious paparazzi development work, the you need a cable like this.&lt;br /&gt;
&lt;br /&gt;
=JTAG Cable overview=&lt;br /&gt;
There are multiple Paparazzi-compatible devices available that support JTAG. Below you find a list of JTAG devices that you can use in combination with e.g. a Paparazzi Lisa/M board. &lt;br /&gt;
&lt;br /&gt;
== FLOSS JTAG ==&lt;br /&gt;
 &lt;br /&gt;
The FLOSS JTAG is based on an FTDI chip that allows two simultaneous USB connections, which means that FLOSS JTAG allows JTAG and UART/COM connections.&lt;br /&gt;
&lt;br /&gt;
Let's take a look at upper side of the board. It contains JTAG connector (which is connected on photo) and two sets of RX/TX LEDs for JTAG and UART/COM interface separately. The JTAG connector is 2x5 pins, 0.05-inch pitch, and is compatible with the Samtec FFSD-05-D-06.00-01-N-RW-R ribbon cable.&lt;br /&gt;
&lt;br /&gt;
[[Image:Jtag-up.jpg]]&lt;br /&gt;
&lt;br /&gt;
On the other side of the board there is 4 pin UART/COM connector, which contains (from top to bottom in the image below): Ground (black), RX (orange), TX (yellow), and +5V (red)&lt;br /&gt;
&lt;br /&gt;
[[Image:Jtag-down.jpg]]&lt;br /&gt;
&lt;br /&gt;
Usage of board is pretty simple: JTAG can be used to upload firmware into the board and/or repair board with broken bootloader, and UART/COM interfaced can be used to make &amp;quot;COM port style&amp;quot; connection to the board. COM connection can be used for example for telemetry debug.&lt;br /&gt;
&lt;br /&gt;
More info available on the [http://randomprojects.org/wiki/Floss-JTAG randomprojects.org wiki].&lt;br /&gt;
&lt;br /&gt;
== Black Magic Probe ==&lt;br /&gt;
&lt;br /&gt;
[[Image:BMPM_1_top.jpg|500x500px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:BMPM_1_bottom.jpg|500x500px]]&lt;br /&gt;
&lt;br /&gt;
Full info about the Black Magic Probe is available at the [http://www.blacksphere.co.nz/main/blackmagic Black Sphere Technology website].&lt;br /&gt;
&lt;br /&gt;
To use Black Magic Probe instead of FLOSS-JTAG or Luftboot, append the following string to the upload command:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
 FLASH_MODE=JTAG BMP_PORT=/dev/ttyACM0&lt;br /&gt;
On Mac OS:&lt;br /&gt;
 FLASH_MODE=JTAG BMP_PORT=/dev/cu.usbmodem&amp;lt;serial&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if this all makes no sense and you need another way to upload take a look at this section http://paparazzi.enac.fr/wiki/Lisa/M_v2.0#Using_JTAG&lt;br /&gt;
&lt;br /&gt;
=== Benefits ===&lt;br /&gt;
&lt;br /&gt;
There are good Reasons to use Black Magic Probe Mini instead of FLOSS-JTAG: It just has much more options and cost less.&lt;br /&gt;
&lt;br /&gt;
*No need for OpenOCD as BMPM has a built in GDB server&lt;br /&gt;
*Orders of magnitude faster as all the high speed protocol logic happens on the built-in STM32&lt;br /&gt;
*Supports Serial Wire Debug (SWD)&lt;br /&gt;
*Supports tracing using the SWD trace pin&lt;br /&gt;
*No need for loading and unloading of FTDI drivers on Mac OS X&lt;br /&gt;
&lt;br /&gt;
===How to use Debugging features===&lt;br /&gt;
&lt;br /&gt;
A page describing on how to start debugging using the BlackMagic probe cable can be found here JTAG: [[DevGuide/JTAG-Debug]]&lt;br /&gt;
&lt;br /&gt;
===Upgrade BMP firmware===&lt;br /&gt;
&lt;br /&gt;
To upgrade your the brain of your Black Magic Probe, a.k.a. firmware use thes commands on you command line&lt;br /&gt;
&lt;br /&gt;
 $ git clone git://blackmagicdebug.git.sourceforge.net/gitroot/blackmagicdebug/blackmagicdebug&lt;br /&gt;
 $ cd blackmagicdebug/src&lt;br /&gt;
 $ make CROSS_COMPILE=~/sat/bin/arm-none-eabi-&lt;br /&gt;
  ../scripts/stm32_mem.py blackmagic.bin&lt;br /&gt;
&lt;br /&gt;
== FT2232 Dev Board ==&lt;br /&gt;
&lt;br /&gt;
Use ftdi prog to change the Description String into: FLOSS-JTAG&lt;br /&gt;
&lt;br /&gt;
[[File:AlternativeFlossJtag.png]]&lt;br /&gt;
&lt;br /&gt;
= Related articles =&lt;br /&gt;
* [[DevGuide/JTAG-Debug]] - Developer's guide JTAG debugging&lt;br /&gt;
* [[Dev/Debugging]] - General debugging information&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:Software]] [[Category:Developer_Documentation]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
(*(oo)*), ,~&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=13789</id>
		<title>Lisa/M v2.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=13789"/>
		<updated>2012-11-29T18:59:33Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added more info about power&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; width: 15%&amp;quot;&amp;gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Autopilots&amp;lt;/categorytree&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 45%; overflow: hidden&amp;quot;&amp;gt;[[Image:LisaM_V2_0_TopView.JPG|right|500px|Lisa/M V2.0 top view]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisa/M is a small, general purpose autopilot designed with flexibility across multiple applications in mind. Small weight and size, with (optional) integrated [[AspirinIMU | Aspirin IMU]] and full size 0.1&amp;quot; servo headers make the Lisa/M suitable for both fixed-wing and rotorcraft vehicles. This autopilot is based on the STM32 for improved peripherals and faster processing.&lt;br /&gt;
&lt;br /&gt;
A number of tutorials are being prepared for getting started with Lisa/M:&lt;br /&gt;
* [[Lisa/M/Tutorial/FixedWing|Fixedwing tutorial]]&lt;br /&gt;
* [[Lisa/M/Tutorial/RotorCraft|Rotorcraft tutorial]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Revision History ==&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
!''Version #''!!''Release Date''!!''Release Notes''&lt;br /&gt;
|-&lt;br /&gt;
|v2.0(current)||03/2012||Updated Production Release&lt;br /&gt;
|-&lt;br /&gt;
|v1.1||MM/YYYY||Updated Prototype&lt;br /&gt;
|-&lt;br /&gt;
|v1.0||MM/YYYY||Initial Production Release&lt;br /&gt;
|-&lt;br /&gt;
|v0.1||MM/YYYY||Initial prototype of Lisa/M&lt;br /&gt;
|}&lt;br /&gt;
For detailed hardware revision history, please [[Lisa/M#Detailed_Hardware_Revision_History | see below]].&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Lisa/M is based on the 64 pins STM32F105RCT6 [http://www.st.com/internet/mcu/product/221023.jsp connectivity line family] processor featuring 64k of RAM and 256k of FLASH. All the pins are exposed, providing access to the complete set of the STM32 peripherals.&lt;br /&gt;
NOTE: This MCU is different from LISA/L. Lisa/L is based on the 64 pins STM32F103RE processor featuring 64k of RAM and 512k of FLASH, which is part of the [http://www.st.com/internet/mcu/product/164485.jsp high-density performance line family].&lt;br /&gt;
&lt;br /&gt;
* STM32 microcontroller [http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00220364.pdf STM32F105RCT6 datasheet] with 256kB flash and 64kB RAM&lt;br /&gt;
* Pressure sensor [http://www.bosch-sensortec.com/content/language1/html/3477.htm BMP085] (optional as of 08/2012)&lt;br /&gt;
* 7 x Analog input channels&lt;br /&gt;
* 3 x Generic digital in-/out-puts&lt;br /&gt;
* 2 x 3.3V TTL UART (5V tolerant)&lt;br /&gt;
* 8 x Servo PPM outputs (only 6 if second I2C (I2C1) bus in use)&lt;br /&gt;
* 1 x CAN bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/I2c I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C] bus (2 x when using only the first 6 Servo PPM outputs)&lt;br /&gt;
* 1 x Micro USB&lt;br /&gt;
* 4 x status LEDs with attached test point&lt;br /&gt;
* 10.8 grams (0.4 oz) (with Aspirin IMU mounted)&lt;br /&gt;
* 9.9 grams (0.35 oz) (without Aspirin IMU mounted)&lt;br /&gt;
* ~34mm x ~60mm x ~10mm&lt;br /&gt;
* 4 layers PCB design&lt;br /&gt;
&lt;br /&gt;
With mounted Aspirin IMU has the following additional sensors on board:&lt;br /&gt;
&lt;br /&gt;
* 3 Axis Gyroscope&lt;br /&gt;
* 3 Axis Accelerometer&lt;br /&gt;
* 3 Axis Magnetometer&lt;br /&gt;
* Barometer (as of Aspirin v2.1r1)&lt;br /&gt;
&lt;br /&gt;
'''Lisa/M has pads for the BMP085 pressure sensor.  Boards made before August 2012 had the BMP085 sensor mounted. Boards made after August 2012 do not have the sensor mounted as they are designed to be used with Aspirin 2.1r1 which has the new MS5611-01BA03 barometric pressure sensor.'''&lt;br /&gt;
&lt;br /&gt;
The drivers for the MS5611-01BA03 are work in progress and will be available in the master branch of the Paparazzi codebase soon. All help with testing and improving the driver are very welcome!&lt;br /&gt;
&lt;br /&gt;
So, except for a GPS unit you have all necessary sensors for full attitude and altitude stabilization in an extremely small package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200px heigths=200px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_TopView.JPG|Lisa/M V2.0 top view&lt;br /&gt;
Image:LisaM_V2_0_BottomView.JPG|Lisa/M V2.0 bottom view&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
Pins Name and Type are specified with respect to the Autopilot Board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:LisaM_V2_0_top_labeled.png|900px]]&lt;br /&gt;
[[Image:LisaM_warning_label.png|200px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SERVO1/2/3/4/5/6/7/8'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||SERVOx||OUT||Servo signal (PWM)(See Note 1 below)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|2||SV||PWR||Servo Bus Voltage Rail (conf w/ JP1)||style=&amp;quot;background:red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''JTAG'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||JTAG Debug Header (Pin 1 is +3V3)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2||V_IN||PWR||UART Voltage (conf w/ JP6 and JP7)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART3 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART3 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1/5'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||RX1||IN||USART1 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|5|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|6||RX5||IN||UART5 Serial Input (3.3V level)(Pullup to Pin 5 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''GPIO'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||PC12||I/O||GPIO, connected to PC12 (5V tolerant)||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|-&lt;br /&gt;
|5||TRST||I/O||JTAG_TRST (also connected to LED1 cathode)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC4||I/O||by default connected to LED_4 cathode (Remove LED/resistor to use as ADC4)||style=&amp;quot;background:magenta; color:white&amp;quot;|Magenta&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC6||I/O||by default connected to LED_3 cathode (Remove LED/resistor to use as ADC6)||style=&amp;quot;background:#FFA1B2; color:black&amp;quot;|Pink&lt;br /&gt;
|-&lt;br /&gt;
|6||BOOT0||I/O||BOOT0||style=&amp;quot;background:grey; color:black&amp;quot;|Grey&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''USB'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||USB (The USB connections are also available as 0.05&amp;quot; (1.27mm) through hole pads underneath the GPIO header)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C1 CAN'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| V_BATT||PWR||V_BATT Bus on autopilot, voltage divider for V_BAT_MEAS, (conf w/ JP2 to connect to V_IN)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| V_IN||PWR||Connected to autopilot voltage regulator inputs (conf w/ JP1, JP2 and JP3)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||CANL||I/O||CANL (5V level)||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|5||CANH||I/O||CANH (5V level)||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|6||SCL||I/O||SCL (5V level)(See Note 1 below)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|7||SDA||I/O||SDA (5V level)(See Note 1 below)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SPI1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||MOSI||Out||MOSI||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||MISO||In||MISO||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|5||SCK||Out||SCK||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|6||SS||Out||SS||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|7||DRDY||I/O||DRDY||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC1||In||ADC1 (or LED_6 if populated)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC2||In||ADC2 (or LED_7 if populated)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|6||ADC3||In||ADC3 (or LED_8 if populated)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||UART Voltage (conf w/ JP4 and JP5)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART2 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART2 Serial Input (3.3V level)('''NOT 5V TOLERANT''')(Pullup to Pin 2 voltage)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||SCL||I/O||SCL (3.3V level)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|4||SDA||I/O||SDA (3.3V level)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE 1''': SERVO7 and SERVO8 are directly connected to I2C1_SCL and I2C1_SDA lines. There one has to choose, either use SERVO7 and SERVO8 '''OR''' the use ''second'' I2C bus (I2C1) if that one needs to be used for whatever reason. To use the servos 7 and 8 just set the  &amp;lt;define name=&amp;quot;USE_SERVOS_7AND8&amp;quot;/&amp;gt;  in your airframe file and you are good to go. This is recently fixed, so for this to work one must make sure to have the latest Paparazzi sourcecode.&lt;br /&gt;
&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Lisa/M 2.0 has 5 LEDS (+1 power LED). There are 3 additional LEDs (LED_6, LED_7, LED_8) that are not populated by default (in favor of using ADC1-3 on the ANALOG1 connector).&lt;br /&gt;
By default the LEDs are use for:&lt;br /&gt;
; LED_1, red: ''SYS_TIME_LED'': blinks with 1Hz&lt;br /&gt;
; LED_2, green : ''AHRS_ALIGNER_LED'': blinks until the AHRS is aligned (gyro bias initilalized) and then stays on&lt;br /&gt;
; LED_3, green : ''GPS_LED'': blinking if trying to get a fix, on if 3D fix&lt;br /&gt;
; LED_4, red : ''RADIO_CONTROL_LED'': on if RC signal is ok&lt;br /&gt;
; LED_5, green : not set to anything by default&lt;br /&gt;
&lt;br /&gt;
=== Jumper Configuration ===&lt;br /&gt;
There are a number of jumpers on Lisa/M used to configure voltage levels and power input.&lt;br /&gt;
&lt;br /&gt;
The default configuration is UART3 VCC at V_IN, UART1/2/5 VCC at +3V3, with the V_SERVO servo voltage rail NOT connected to the autopilot V_IN rail, allowing one to power the autopilot and servos separately. The +5V regulator is NOT bypassed, allowing a regulated +5V on listed headers and for the CAN transceiver and I2C level shifter. The V_BATT connector is NOT connected to V_IN, so one can attach a battery voltage to the V_BATT pin to measure the battery voltage, if so desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_top_jumpers_and_leds.png | Lisa/M v2.0 Top Jumpers and LEDs&lt;br /&gt;
Image:LisaM_V2_0_bottom_jumpers.png | Lisa/M v2.0 Bottom Jumpers&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Power Jumper Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP1||SERVO_BUS to V_IN||OPEN||Connects servo header voltage rail SERVO_BUS to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP2||V_BATT to V_IN||OPEN||Connects I2C1/CAN rail V_BATT to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP3||V_IN to +5V||OPEN||Connects autopilot input voltage V_IN rail to autopilot +5V rail, bypassing onboard 5V supply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP6||UART3_VCC to V_IN||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART3 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP7||UART3_VCC to +3V3||OPEN||Connects UART3 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting!!!'''&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP6 AND JP7 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP4||UART2_VCC to V_IN||OPEN||Connects UART2 connector VCC to autopilot input voltage V_IN rail '''SEE WARNING BELOW'''&lt;br /&gt;
|-&lt;br /&gt;
|JP5||UART2_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART2 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART2 RX is NOT 5V TOLERANT. Thus, while possible to connect UART2_VCC to V_IN, DO NOT ATTEMPT THIS. Only use JP5 (the default).&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP4 AND JP5 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1 and UART5 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP8||UART1&amp;amp;5_VCC to V_IN||OPEN||Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP9||UART1&amp;amp;5_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART1 and UART5 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
There are additional jumpers on the board for expert or developer configurations, please see [[Lisa/M_v20#Schematic|schematic]] and [[Lisa/M_v20#Downloads|layout]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Powering the Board ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_warning_label.png|right|200px]]&lt;br /&gt;
&lt;br /&gt;
The 3.3V regulator on Lisa/M is a [http://www.micrel.com/page.do?page=/product-info/products/mic5209.shtml MIC5209-3.3YM] capable of delivering up to 500mA. While it is possible to power this regulator with up to 16V, '''DO NOT''' do this. By default, the UART3 RX pin is pulled up to the input voltage V_IN. For this reason, 5V is the maximum input voltage. Note that the UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting. If one desires to have V_IN at a higher voltage, the jumpers should be adjusted accordingly. As noted, this regulator can handle up to 16V, though experience has shown that this regulator can become very hot in operation with high input voltages, resulting in potential thermal shutdown while in flight. Depending on the expected current draw, it is best to power this regulator with a lower voltage. 5V is the perfect choice. &lt;br /&gt;
&lt;br /&gt;
The onboard 5V regulator on Lisa/M is a [http://www.national.com/pf/LP/LP2992.html LP2992], a low-noise, low-dropout linear regulator capable of delivering up to 250mA. This regulator can be bypassed with JP3, connecting the autopilot V_IN bus directly to the autopilot 5V bus if, for example, one is using an external 5V regulated supply, and a higher current is needed. Unless external use of 5V is required on the ANALOG1 and ANALOG2 headers, the only 5V usage onboard is for the CAN transceiver and the I2C1 level shifter.&lt;br /&gt;
&lt;br /&gt;
When measuring the supply voltage of a battery with the V_BATT pin (could be connected to V_IN through JP2), it is important to note the maximum voltage limit. The voltage divider on the board for measuring with a 3.3V ADC is --'''V_BAT'''--/\/\'''10k'''/\/\--'''V_BAT_MEAS'''--/\/\'''2k2'''/\/\--'''GND'''--. This means that the maximum allowable voltage on V_BATT is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;V\_BAT_{max} = 3.3V*\frac{10k}{2.2k} = 15V&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a higher voltage measurement is desired, another voltage divider is required off-board. Alternatively, one could modify the existing voltage divider (e.g. change 10k resistor to 22k to get 33V maximum). When checking if voltage exceeds the maximum, make sure to consider maximum battery voltage, not nominal voltage (e.g. 4.22V or so for a single lithium cell, not 3.7V nominal, so the maximum number of cells in series is 3, like a 3S LiPo pack).&lt;br /&gt;
&lt;br /&gt;
== Schematic ==&lt;br /&gt;
&amp;lt;gallery widths=250px heights=168px&amp;gt;&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_1.png | LisaM V2.0 Schematic Sheet 1/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_2.png | LisaM V2.0 Schematic Sheet 2/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_3.png | LisaM V2.0 Schematic Sheet 3/3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples of Airborne Equipment Electrical Connections ==&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and PWM Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_v2_0_wiring_quadrocopter_spektrum_pwmesc.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESCs have a battery eliminator circuit (BEC) function and provide 5 volts on their 5V pins. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
When using cheap ATMega or SiLabs-based PWM motor controllers consider replacing their firmware with either [https://github.com/sim-/tgy Simon Kirby] or [https://github.com/bitdump/BLHeli BLHeli] firmware respectively to get useful performance of your multicopter! You can find a firmware compatibility list [https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZRlE here].&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and I2C Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_quadrocopter_spektrum_i2c_esc_wiring.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This diagram &amp;quot;should&amp;quot; be the same for AscTec as well as Mikrokopter motor controller based airframes.&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers and Elevons Only ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum_elevons.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESC has a BEC and provides 5 volts on its 5V pin. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESC has a BEC and provides 5 volts on its 5V pin. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
=== Transitioning [http://wiki.thequadshot.com Quadshot] Using Spektrum Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_quadshot_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
The ESCs have BECs and provide 5 volts on their 5V pins. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
Still need: Large Fixed-wing with advanced power system and/or IC engine, PPM example&lt;br /&gt;
&lt;br /&gt;
=== R/C Receivers ===&lt;br /&gt;
One can use traditional PPM receivers as wel as Spektrum DSM2 or compatible receivers for flying your aircraft in manual mode during setup and test phase. The Lisa M can direcly connect to a Spectrum DSM2 satellite receiver. It is even possible to connect two satellite receivers for better redundancy or RC reception. It is&lt;br /&gt;
&lt;br /&gt;
==== Bind your Spectrum DSM receiver ====&lt;br /&gt;
&lt;br /&gt;
It is important to bind your receiver with your transmitter '''via your Lisa board''', not in any other way. The way to do this is via fiddly small molex pins&lt;br /&gt;
&lt;br /&gt;
Before you start make sure you have your airframe configuration already uploaded either via USB or a JTAG cable&lt;br /&gt;
&lt;br /&gt;
* On the connector ANALOG1 have a wire between the GND pin ADC1, located in the middle of the board&lt;br /&gt;
* Power up your autopilot board&lt;br /&gt;
* Hold the bind button on your '''transmitter''', while '''keeping it pressed''' switch on your transmitter&lt;br /&gt;
* Wait.. all light of receiver blink then go steady&lt;br /&gt;
* Let go of your transmitter bind button&lt;br /&gt;
* Power off your Lisa Board&lt;br /&gt;
* remove the wire between GND and ADC1 pins&lt;br /&gt;
* Repower your board, if you have servos connected and wiggle the RC transmitter sticks some sould move&lt;br /&gt;
&lt;br /&gt;
That all, you are done. Only needs to be done '''once''' for your receiver.&lt;br /&gt;
&lt;br /&gt;
=== PPM sum stream input ===&lt;br /&gt;
&lt;br /&gt;
The default pin to capture the PPM sum stream is servo channel 6, but this can be reconfigured to the RX of UART1. To use ppm for your radio, put this in your airframe file in your ap target.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;ppm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- This configuration is optional. Select either one of these (not both) --&amp;gt;&lt;br /&gt;
        &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;UART1_RX&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;!-- &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;SERVO6&amp;quot;/&amp;gt; --&amp;gt;&lt;br /&gt;
    &amp;lt;/subsystem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra Input ===&lt;br /&gt;
&lt;br /&gt;
Also UART pins can be used as general purpose I/O to be used for PPM input. By default connect your PPM out able receiver to servo pin 6. If you do not have or cannot create a PPM out able receiver, additionally a [[PPM_Encoder | PPM encoder board]] can be used to avoid receiver hardware modification.&lt;br /&gt;
&lt;br /&gt;
=== Use USB as UART1TX + hardware flow control ===&lt;br /&gt;
[[File:Lisam-usb-uart1.jpg]]&lt;br /&gt;
&lt;br /&gt;
The USB_VBUS on the Lisa/M 2.0 can be used as UART1 TX. To do this, a diode has to be removed. Make sure to include a series resistor of 100-3000 Ohm to protect the microcontroller from overcurrents. The 2nd and 3th pin of the USB pads are CTS and RTS respactively. It is recommended to include a series resistor in the RTS line, as this is an outgoing line. &lt;br /&gt;
&lt;br /&gt;
If you want to enable flow control in the software, but don't want to use flow control when no cable is connected to the CTS/RTS, a pulldown resistor of 10 kOhm has to be added between the CTS and the GND. If you do this, take care when connecting UART devices that have a large series resistor in their RTS line. The combination of the pulldown resistor and the series resistor might cause the high-level voltage to drop under the high-level treshold of the microcontroller, causing strange behaviour.&lt;br /&gt;
&lt;br /&gt;
For Example the RTS , mostly a purple wire, is the '''pin 10''' on the Xtend module when set in the module with Hardware flow control (use X-CTU)&lt;br /&gt;
CTS, most blue, on pin 9 of the Xtend&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:Lisam-diode.JPG | Remove this diode. After removing this diode you can not power the board via USB anymore.&lt;br /&gt;
Image:Lisam-gpio-usb.JPG | Take care of the small distance between the GPIO pins and the USB pads.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCB ==&lt;br /&gt;
&lt;br /&gt;
=== Gerber &amp;amp; Drill Files  ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 gerber &amp;amp; drill files (zip)''''' ''NOT YET AVAILABLE BUT SEE [[Lisa/M#Downloads|Downloads]]''&lt;br /&gt;
Need some generated gerbers and drill files here.&lt;br /&gt;
&lt;br /&gt;
== Assembly ==&lt;br /&gt;
&lt;br /&gt;
===Components Layout===&lt;br /&gt;
&lt;br /&gt;
''NOT YET AVAILABLE BUT SEE [[Lisa/M#Downloads|Downloads]]''&lt;br /&gt;
Need some top and bottom of board images and line drawings here.&lt;br /&gt;
&lt;br /&gt;
=== Bill Of Material ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 Bill Of Material (zipped .xls file)''''' ''NOT YET AVAILABLE BUT SEE [[Lisa/M#Downloads|Downloads]]''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCB and assembled boards suppliers ==&lt;br /&gt;
&lt;br /&gt;
Available on [[Get_Hardware|Get Hardware]] page, hopefully :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mechanical Dimensions ==&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_V2_0_top_mechanical.png|500px|Lisa/M v2.0 Mechanical Dimensions]]&lt;br /&gt;
&lt;br /&gt;
The overall height of the board including the servo connectors is 10mm. Note that the overall length includes the USB connector. The mounting holes are nominal 2mm diameter (with a bit of clearance).&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
'''Source files'''&lt;br /&gt;
:*download available on GitHub: ''[https://github.com/paparazzi/paparazzi-hardware/tree/master/controller/lisa_m/v2.0 Lisa/M v2.0 Cadsoft Eagle 6 Design]''&lt;br /&gt;
'''Gerber &amp;amp; Drill files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need generated gerbers and drill files&lt;br /&gt;
'''Assembly files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Components layouts (pdf)&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Bill Of Material&lt;br /&gt;
&lt;br /&gt;
== Uploading new software ==&lt;br /&gt;
&lt;br /&gt;
New onboard software for the Lisa/M v2.0 can uploaded by connecting your PC via a micro-USB port to the autopilot board. For this the board need to contain a &amp;quot;luftboot&amp;quot; bootloader. All Lisa/M 2.0 from Transition Robotics Inc. come with luftboot already in the board.&lt;br /&gt;
&lt;br /&gt;
An alternative to get your software/flightplane in the board is by using a JTAG connector connected via the 10-pin Samtec connector that is available on the board.&lt;br /&gt;
&lt;br /&gt;
=== Using luftboot ===&lt;br /&gt;
&lt;br /&gt;
First make sure you '''update to the latest stable Paparazzi version''', then you will have support for this bootloader method. By default use the associated DFU loader to program the firmware. Make sure that your airframe file is set to use Lisa/M 2.0 as it's target board.&lt;br /&gt;
&lt;br /&gt;
Currently Paparazzi firmware does not contain the needed software to switch into bootloader mode using software only by USB. To circumvent this shortcoming, you need a small cable to force the bootloader to run. This cable should bridge pin GND and ADC2. Make sure you do not shortcircuit your board.&lt;br /&gt;
&lt;br /&gt;
Once your &amp;quot;Boot mode connector&amp;quot; is inserted, connect the Lisa/M to the PC via a micro-usb cable and it should start in bootloader mode. If the status LEDs cycle up and down, it is in booatloader mode, ready to receive your new flightplan and autopilot control software upgdate.&lt;br /&gt;
&lt;br /&gt;
Note that all of this won't be necessary in the future once a working USB stack stub is added to the latest Paparazzi.&lt;br /&gt;
&lt;br /&gt;
[[File:Luftboot.gif|320px]]&lt;br /&gt;
&lt;br /&gt;
You should disconnect the &amp;quot;Boot mode connector&amp;quot; after enforcing the bootloader. Pressing upload in the Paparazzi Center should now upload new code onto the board.&lt;br /&gt;
&lt;br /&gt;
In the rare case you somehow have removed the luftboot bootloader, you can re-insert this Boatloader by following the instructions of ''Uploading the Paparazzi USB Bootloader''&lt;br /&gt;
&lt;br /&gt;
=== Uploading the Paparazzi USB Bootloader ===&lt;br /&gt;
&lt;br /&gt;
Reading or performing these steps is not needed if you got your Lisa/M 2.0 from Transition Robotics Inc., these boards come with luftboot already preloaded. But in the case you made a board yourself or somehow do not have a preloaded bootloader, or it is gone because of unknown cause, then read this section. It describes the process on how to upload/recover the luftboot bootloader on your Lisa/M 2.0.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/paparazzi/luftboot Luftboot] is a Paparazzi-compatible bootloader for STM32-based autopilots.&lt;br /&gt;
Depending on your vendor, your Lisa/M may already come with a bootloader, in which case you should skip to [[Lisa/M#Uploading new software]]&lt;br /&gt;
&lt;br /&gt;
==== Required components ====&lt;br /&gt;
&lt;br /&gt;
*Floss-JTAG debugger or Blacksphere mini JTAG&lt;br /&gt;
*Lisa/M board&lt;br /&gt;
*PC&lt;br /&gt;
&lt;br /&gt;
==== Procedure ====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Get the [https://github.com/paparazzi/luftboot Luftboot sourcecode from Github] via&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;git clone https://github.com/paparazzi/luftboot.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Change directory into the luftboot/src folder&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;cd ./luftboot/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Build luftboot&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;make clean &amp;amp;&amp;amp; make&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Flash the Lisa/M&lt;br /&gt;
Attach the floss-jtag unit to the PC and connect it to the Lisa/M via the black connector.&lt;br /&gt;
Power the Lisa/M (easiest way is to connect to the PC via a micro-USB cable).&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;make flash DEV_SERIAL=&amp;quot;LM2-ser&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
where &amp;quot;ser&amp;quot; stands for the serial number of your Lisa/M. So for example if you have lisa/m with the serial number 020 this would be:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;make clean &amp;amp;&amp;amp; make flash DEV_SERIAL=&amp;quot;LM2-020&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Connection Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Boot Sequence ====&lt;br /&gt;
&lt;br /&gt;
* Luftboot&lt;br /&gt;
** Check if ADC2 is configured as output pull down indicating software bootloader request&lt;br /&gt;
*** '''If ADC2 output pull down:''' initialize usb and stay in bootloader mode&lt;br /&gt;
** Setting the ADC2 pin to input pull up&lt;br /&gt;
** Checking if the ADC2 pin is low&lt;br /&gt;
*** '''If ADC2 low:''' initialize USB and stay in bootloader mode&lt;br /&gt;
*** '''If ADC2 high:''' check if there is a payload at 0x8002000&lt;br /&gt;
**** '''If payload detected:''' set vector table pointer to be at 0x8002000 and jump to the reset handler of the payload&lt;br /&gt;
**** '''If payload not detected:''' initialize USB and stay in bootloader mode&lt;br /&gt;
&lt;br /&gt;
==== Luftboot USB permissions ====&lt;br /&gt;
&lt;br /&gt;
[[Installation/Linux#Udev_rules|Copy the udev-rules file]] is needed for the upload software to get permission to use this hardware in your PC for uploading.&lt;br /&gt;
For short: the Python program &amp;quot;stm32_mem.py&amp;quot; needs permission to write to the the Luftboot USB device. If you do not have set this rules already you get an error message, which explanation what is wrong is quite obscure due to the way python-libusb accesses the device.&lt;br /&gt;
&lt;br /&gt;
=== Using JTAG ===&lt;br /&gt;
If you are using the Lisa/M 2.0 target board you still can use JTAG for programming and debugging your paparazzi firmware. To use JTAG flashing configure the ''FLASH_MODE'' in your firmware section:&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;JTAG&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Using JTAG will not overwrite the bootloader by default. To overwrite the luftboot bootloader configure&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;NO_LUFTBOOT&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[JTAG]] description;&lt;br /&gt;
* General [[Dev/Debugging|debugging information]];&lt;br /&gt;
* [[DevGuide/JTAG-Debug|JTAG usage]], includes Eclipse uplink tutorial.&lt;br /&gt;
&lt;br /&gt;
==== Quick JTAG Upload Guide ====&lt;br /&gt;
# Connect floss-jtag to Lisa via the cortex cable (little black socket)&lt;br /&gt;
# Attach the UART port on the bottom of the floss-jtag to UART2 on the Lisa.&lt;br /&gt;
# Plug in USB port of the floss jtag&lt;br /&gt;
# Plug in USB port of the Lisa&lt;br /&gt;
# Make sure your airframe uses the &amp;lt;target name=&amp;quot;ap&amp;quot; board=&amp;quot;lisa_m_2.0&amp;quot;&amp;gt; definition&lt;br /&gt;
# Click Build, wait until complete, then click Upload.  You should see the following towards the end:&lt;br /&gt;
{{{&lt;br /&gt;
...&lt;br /&gt;
Info : device id = 0x10016418&lt;br /&gt;
Info : flash size = 256kbytes&lt;br /&gt;
stm32x mass erase complete&lt;br /&gt;
Info : Padding image section 1 with 7972 bytes&lt;br /&gt;
wrote 152576 bytes from file src/paparazzi/var/Hexa_LisaL/ap/ap.elf in 7.498179s (19.871 KiB/s)&lt;br /&gt;
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)&lt;br /&gt;
Info : JTAG tap: stm32.bs tap/device found: 0x06418041 (mfg: 0x020, part: 0x6418, ver: 0x0)&lt;br /&gt;
shutdown command invoked&lt;br /&gt;
}}}&lt;br /&gt;
# Run Flight USB-serial at the baud rate you need (default 57600 for rotorcraft)&lt;br /&gt;
# You may need to change the device to /dev/ttyUSB1, and 'Redo' the Data Link&lt;br /&gt;
&lt;br /&gt;
=== Serial Firmware Upload ===&lt;br /&gt;
&lt;br /&gt;
Firmware upload using the factory integrated bootloader can be useful e.g. if you have overwritten Luftboot accidentally and don´t have access to JTAG.&lt;br /&gt;
&lt;br /&gt;
Due to hardware constraints, the board has to be modified to make use of the bootloader, which is only accessible on UART1:&lt;br /&gt;
# Diode D3 has to be removed (the bigger black brick next to the USB connector). Attention, no more powering via USB after that.&lt;br /&gt;
# BOOT1 has to be set to GND by connecting ACC_DRDY(unused) to GND at the Aspirin pads&lt;br /&gt;
&lt;br /&gt;
Now a boot sequence works as follows:&lt;br /&gt;
#BOOT1 has to be set to 3.3V by use of a jumper cable&lt;br /&gt;
#Connect a 3,3V serial cable (FTDI, MAX232...) to UART1, the TX pin is USB_VBUS&lt;br /&gt;
#Power the board and activate the bootloader program&lt;br /&gt;
&lt;br /&gt;
The according bootloader script can be found at :&lt;br /&gt;
[https://github.com/jsnyder/stm32loader stm32loader from Github]&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;git clone https://github.com/jsnyder/stm32loader.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reload Luftboot, upload luftboot.bin&lt;br /&gt;
&lt;br /&gt;
Serial upload can also be used directly from paparazzi Center by adapting the right path in [https://github.com/paparazzi/paparazzi/blob/dev/conf/Makefile.stm32 Makefile.stm32] for the LOADER argument and setting &lt;br /&gt;
&lt;br /&gt;
&amp;lt;define name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;SERIAL&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
in the target section of the airframe configuration.&lt;br /&gt;
&lt;br /&gt;
== Detailed Hardware Revision History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes Between LISA v1.1 and v2.0 ===&lt;br /&gt;
&lt;br /&gt;
* Lots of silkscreen improvements&lt;br /&gt;
* Added attributes to all parts to make the usage of bom-ex ulp possible.&lt;br /&gt;
* Improved routing to allow teardropping&lt;br /&gt;
* Fixed stm32f1, f2 and f4 compatibility circuit. (has to jump to ground not to 3v3)&lt;br /&gt;
* Connected existing UART RX pullups to the respective connector power pins instead of 3v3. To prevent connecting 5V over IO pin to the 3v3 power rail.&lt;br /&gt;
* Added pullups on all UART RX lines to prevent undesired floatation.&lt;br /&gt;
* LED's are connected to 3v3 now. To make sure we don't have an issue with voltage tolerance on the gpio pins.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Hardware Change Requests ==&lt;br /&gt;
&lt;br /&gt;
If you have a Lisa/M 2.0 and in the process of using it you come up with something you find annoying, dangerous, or restricting, add your hardware update requests here. Better still, modify the Lisa schematics yourself and show your new improvements if you are skilled enough to do this.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace BMP085 with MS5611 (the MS5611 seems to be better in performance then the BMP but it is more expensive and seems to be more difficult to obtain. &lt;br /&gt;
** A: Using a MS5611 is possible through using a Aspirin v2.1 board&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace 7 Pin CAN with molex with something less risky to be inserted in 7 Pin SPI in relation to powering the board via CAN molex.&lt;br /&gt;
&lt;br /&gt;
* REQ: Separate spot for external power if powered via separate battery. Realizing we can via Servo ports by Bridge J1 but still like to measure board voltage then and have a way to add power without mistakenly insert I2CCAN Molex conector into SPI Molex on board connector. Thus a separate CAN and Power plug. Power on regular four pin molex with GND, V+5, , V_BATT, V_I (Current sense). Option to have thicker wire to be soldered to the board, for power hungry setups and other issues connectors for power are not a good idea.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace Aspirin IMU board with InvenSense MPU-9150 and bring the MS5611 back onto the Lisa/M board to reduce footprint, mass, and manufacturing cost once the 9150 becomes readily available(if at al with SPI) and is tested to perform well.&lt;br /&gt;
[[Category:Lisa]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=13788</id>
		<title>Lisa/M v2.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=Lisa/M_v2.0&amp;diff=13788"/>
		<updated>2012-11-29T18:51:13Z</updated>

		<summary type="html">&lt;p&gt;Jkg: added more info about power&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; width: 15%&amp;quot;&amp;gt;&amp;lt;categorytree style=&amp;quot;float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;&amp;quot; mode=pages&amp;gt;Autopilots&amp;lt;/categorytree&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 45%; overflow: hidden&amp;quot;&amp;gt;[[Image:LisaM_V2_0_TopView.JPG|right|500px|Lisa/M V2.0 top view]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 40%&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisa/M is a small, general purpose autopilot designed with flexibility across multiple applications in mind. Small weight and size, with (optional) integrated [[AspirinIMU | Aspirin IMU]] and full size 0.1&amp;quot; servo headers make the Lisa/M suitable for both fixed-wing and rotorcraft vehicles. This autopilot is based on the STM32 for improved peripherals and faster processing.&lt;br /&gt;
&lt;br /&gt;
A number of tutorials are being prepared for getting started with Lisa/M:&lt;br /&gt;
* [[Lisa/M/Tutorial/FixedWing|Fixedwing tutorial]]&lt;br /&gt;
* [[Lisa/M/Tutorial/RotorCraft|Rotorcraft tutorial]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Revision History ==&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;6&amp;quot;&lt;br /&gt;
!''Version #''!!''Release Date''!!''Release Notes''&lt;br /&gt;
|-&lt;br /&gt;
|v2.0(current)||03/2012||Updated Production Release&lt;br /&gt;
|-&lt;br /&gt;
|v1.1||MM/YYYY||Updated Prototype&lt;br /&gt;
|-&lt;br /&gt;
|v1.0||MM/YYYY||Initial Production Release&lt;br /&gt;
|-&lt;br /&gt;
|v0.1||MM/YYYY||Initial prototype of Lisa/M&lt;br /&gt;
|}&lt;br /&gt;
For detailed hardware revision history, please [[Lisa/M#Detailed_Hardware_Revision_History | see below]].&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Lisa/M is based on the 64 pins STM32F105RCT6 [http://www.st.com/internet/mcu/product/221023.jsp connectivity line family] processor featuring 64k of RAM and 256k of FLASH. All the pins are exposed, providing access to the complete set of the STM32 peripherals.&lt;br /&gt;
NOTE: This MCU is different from LISA/L. Lisa/L is based on the 64 pins STM32F103RE processor featuring 64k of RAM and 512k of FLASH, which is part of the [http://www.st.com/internet/mcu/product/164485.jsp high-density performance line family].&lt;br /&gt;
&lt;br /&gt;
* STM32 microcontroller [http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00220364.pdf STM32F105RCT6 datasheet] with 256kB flash and 64kB RAM&lt;br /&gt;
* Pressure sensor [http://www.bosch-sensortec.com/content/language1/html/3477.htm BMP085] (optional as of 08/2012)&lt;br /&gt;
* 7 x Analog input channels&lt;br /&gt;
* 3 x Generic digital in-/out-puts&lt;br /&gt;
* 2 x 3.3V TTL UART (5V tolerant)&lt;br /&gt;
* 8 x Servo PPM outputs (only 6 if second I2C (I2C1) bus in use)&lt;br /&gt;
* 1 x CAN bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] bus&lt;br /&gt;
* 1 x [http://en.wikipedia.org/wiki/I2c I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C] bus (2 x when using only the first 6 Servo PPM outputs)&lt;br /&gt;
* 1 x Micro USB&lt;br /&gt;
* 4 x status LEDs with attached test point&lt;br /&gt;
* 10.8 grams (0.4 oz) (with Aspirin IMU mounted)&lt;br /&gt;
* 9.9 grams (0.35 oz) (without Aspirin IMU mounted)&lt;br /&gt;
* ~34mm x ~60mm x ~10mm&lt;br /&gt;
* 4 layers PCB design&lt;br /&gt;
&lt;br /&gt;
With mounted Aspirin IMU has the following additional sensors on board:&lt;br /&gt;
&lt;br /&gt;
* 3 Axis Gyroscope&lt;br /&gt;
* 3 Axis Accelerometer&lt;br /&gt;
* 3 Axis Magnetometer&lt;br /&gt;
* Barometer (as of Aspirin v2.1r1)&lt;br /&gt;
&lt;br /&gt;
'''Lisa/M has pads for the BMP085 pressure sensor.  Boards made before August 2012 had the BMP085 sensor mounted. Boards made after August 2012 do not have the sensor mounted as they are designed to be used with Aspirin 2.1r1 which has the new MS5611-01BA03 barometric pressure sensor.'''&lt;br /&gt;
&lt;br /&gt;
The drivers for the MS5611-01BA03 are work in progress and will be available in the master branch of the Paparazzi codebase soon. All help with testing and improving the driver are very welcome!&lt;br /&gt;
&lt;br /&gt;
So, except for a GPS unit you have all necessary sensors for full attitude and altitude stabilization in an extremely small package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=200px heigths=200px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_TopView.JPG|Lisa/M V2.0 top view&lt;br /&gt;
Image:LisaM_V2_0_BottomView.JPG|Lisa/M V2.0 bottom view&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
Pins Name and Type are specified with respect to the Autopilot Board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:LisaM_V2_0_top_labeled.png|900px]]&lt;br /&gt;
[[Image:LisaM_warning_label.png|200px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SERVO1/2/3/4/5/6/7/8'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||SERVOx||OUT||Servo signal (PWM)(See Note 1 below)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|2||SV||PWR||Servo Bus Voltage Rail (conf w/ JP1)||style=&amp;quot;background:red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''JTAG'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||JTAG Debug Header (Pin 1 is +3V3)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2||V_IN||PWR||UART Voltage (conf w/ JP6 and JP7)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART3 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART3 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1/5'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||RX1||IN||USART1 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|5|| +3V3||PWR||3.3V Rail from autopilot (conf w/ JP8 and JP9)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|6||RX5||IN||UART5 Serial Input (3.3V level)(Pullup to Pin 5 voltage)(5V tolerant)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''GPIO'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||PC12||I/O||GPIO, connected to PC12 (5V tolerant)||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|-&lt;br /&gt;
|5||TRST||I/O||JTAG_TRST (also connected to LED1 cathode)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC4||I/O||by default connected to LED_4 cathode (Remove LED/resistor to use as ADC4)||style=&amp;quot;background:magenta; color:white&amp;quot;|Magenta&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC6||I/O||by default connected to LED_3 cathode (Remove LED/resistor to use as ADC6)||style=&amp;quot;background:#FFA1B2; color:black&amp;quot;|Pink&lt;br /&gt;
|-&lt;br /&gt;
|6||BOOT0||I/O||BOOT0||style=&amp;quot;background:grey; color:black&amp;quot;|Grey&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''USB'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||N/A||N/A||USB (The USB connections are also available as 0.05&amp;quot; (1.27mm) through hole pads underneath the GPIO header)||style=&amp;quot;background:white; color:black&amp;quot;|None&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C1 CAN'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| V_BATT||PWR||V_BATT Bus on autopilot, voltage divider for V_BAT_MEAS, (conf w/ JP2 to connect to V_IN)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| V_IN||PWR||Connected to autopilot voltage regulator inputs (conf w/ JP1, JP2 and JP3)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||CANL||I/O||CANL (5V level)||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|5||CANH||I/O||CANH (5V level)||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|6||SCL||I/O||SCL (5V level)(See Note 1 below)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|7||SDA||I/O||SDA (5V level)(See Note 1 below)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''SPI1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||MOSI||Out||MOSI||style=&amp;quot;background:orange; color:white&amp;quot;|Orange&lt;br /&gt;
|-&lt;br /&gt;
|4||MISO||In||MISO||style=&amp;quot;background:yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|5||SCK||Out||SCK||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|6||SS||Out||SS||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|7||DRDY||I/O||DRDY||style=&amp;quot;background:#FDC579; color:black&amp;quot;|Dark Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''ANALOG1'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3|| +5V||PWR||5V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|4||ADC1||In||ADC1 (or LED_6 if populated)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|5||ADC2||In||ADC2 (or LED_7 if populated)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|-&lt;br /&gt;
|6||ADC3||In||ADC3 (or LED_8 if populated)||style=&amp;quot;background:#FED6B1; color:black&amp;quot;|Light Tan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||UART Voltage (conf w/ JP4 and JP5)||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||TX||OUT||USART2 Serial Output (3.3V level)||style=&amp;quot;background:Yellow; color:black&amp;quot;|Yellow&lt;br /&gt;
|-&lt;br /&gt;
|4||RX||IN||USART2 Serial Input (3.3V level)('''NOT 5V TOLERANT''')(Pullup to Pin 2 voltage)||style=&amp;quot;background:Orange; color:white&amp;quot;|Orange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''I2C2'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Pin #''!!width=&amp;quot;10%&amp;quot;|''Name''!!width=&amp;quot;10%&amp;quot;|''Type''!!''Description''!!width=&amp;quot;5%&amp;quot;|''Color''&lt;br /&gt;
|-&lt;br /&gt;
|1||GND||PWR||common ground||style=&amp;quot;background:black; color:white&amp;quot;|Black&lt;br /&gt;
|-&lt;br /&gt;
|2|| +3V3||PWR||3.3V Rail from autopilot||style=&amp;quot;background:Red; color:white&amp;quot;|Red&lt;br /&gt;
|-&lt;br /&gt;
|3||SCL||I/O||SCL (3.3V level)||style=&amp;quot;background:green; color:white&amp;quot;|Green&lt;br /&gt;
|-&lt;br /&gt;
|4||SDA||I/O||SDA (3.3V level)||style=&amp;quot;background:blue; color:white&amp;quot;|Blue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE 1''': SERVO7 and SERVO8 are directly connected to I2C1_SCL and I2C1_SDA lines. There one has to choose, either use SERVO7 and SERVO8 '''OR''' the use ''second'' I2C bus (I2C1) if that one needs to be used for whatever reason. To use the servos 7 and 8 just set the  &amp;lt;define name=&amp;quot;USE_SERVOS_7AND8&amp;quot;/&amp;gt;  in your airframe file and you are good to go. This is recently fixed, so for this to work one must make sure to have the latest Paparazzi sourcecode.&lt;br /&gt;
&lt;br /&gt;
=== LEDs ===&lt;br /&gt;
Lisa/M 2.0 has 5 LEDS (+1 power LED). There are 3 additional LEDs (LED_6, LED_7, LED_8) that are not populated by default (in favor of using ADC1-3 on the ANALOG1 connector).&lt;br /&gt;
By default the LEDs are use for:&lt;br /&gt;
; LED_1, red: ''SYS_TIME_LED'': blinks with 1Hz&lt;br /&gt;
; LED_2, green : ''AHRS_ALIGNER_LED'': blinks until the AHRS is aligned (gyro bias initilalized) and then stays on&lt;br /&gt;
; LED_3, green : ''GPS_LED'': blinking if trying to get a fix, on if 3D fix&lt;br /&gt;
; LED_4, red : ''RADIO_CONTROL_LED'': on if RC signal is ok&lt;br /&gt;
; LED_5, green : not set to anything by default&lt;br /&gt;
&lt;br /&gt;
=== Jumper Configuration ===&lt;br /&gt;
There are a number of jumpers on Lisa/M used to configure voltage levels and power input.&lt;br /&gt;
&lt;br /&gt;
The default configuration is UART3 VCC at V_IN, UART1/2/5 VCC at +3V3, with the V_SERVO servo voltage rail NOT connected to the autopilot V_IN rail, allowing one to power the autopilot and servos separately. The +5V regulator is NOT bypassed, allowing a regulated +5V on listed headers and for the CAN transceiver and I2C level shifter. The V_BATT connector is NOT connected to V_IN, so one can attach a battery voltage to the V_BATT pin to measure the battery voltage, if so desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:LisaM_V2_0_top_jumpers_and_leds.png | Lisa/M v2.0 Top Jumpers and LEDs&lt;br /&gt;
Image:LisaM_V2_0_bottom_jumpers.png | Lisa/M v2.0 Bottom Jumpers&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''Power Jumper Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP1||SERVO_BUS to V_IN||OPEN||Connects servo header voltage rail SERVO_BUS to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP2||V_BATT to V_IN||OPEN||Connects I2C1/CAN rail V_BATT to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP3||V_IN to +5V||OPEN||Connects autopilot input voltage V_IN rail to autopilot +5V rail, bypassing onboard 5V supply&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART3 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP6||UART3_VCC to V_IN||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART3 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP7||UART3_VCC to +3V3||OPEN||Connects UART3 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting!!!'''&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP6 AND JP7 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART2 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP4||UART2_VCC to V_IN||OPEN||Connects UART2 connector VCC to autopilot input voltage V_IN rail '''SEE WARNING BELOW'''&lt;br /&gt;
|-&lt;br /&gt;
|JP5||UART2_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART2 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: UART2 RX is NOT 5V TOLERANT. Thus, while possible to connect UART2_VCC to V_IN, DO NOT ATTEMPT THIS. Only use JP5 (the default).&lt;br /&gt;
&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP4 AND JP5 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot; cellpadding=&amp;quot;2%&amp;quot; width=&amp;quot;70%&amp;quot;&lt;br /&gt;
|+'''UART1 and UART5 VCC Configuration'''&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;|''Jumper''!!width=&amp;quot;20%&amp;quot;|''Bus Connection''!!width=&amp;quot;7%&amp;quot;|''Default''!!''Description''&lt;br /&gt;
|-&lt;br /&gt;
|JP8||UART1&amp;amp;5_VCC to V_IN||OPEN||Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail&lt;br /&gt;
|-&lt;br /&gt;
|JP9||UART1&amp;amp;5_VCC to +3V3||style=&amp;quot;background:black; color:white&amp;quot;|CLOSED||Connects UART1 and UART5 connector VCC to autopilot +3V3 rail&lt;br /&gt;
|}&lt;br /&gt;
'''WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!'''&lt;br /&gt;
&lt;br /&gt;
There are additional jumpers on the board for expert or developer configurations, please see [[Lisa/M_v20#Schematic|schematic]] and [[Lisa/M_v20#Downloads|layout]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Powering the Board ===&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_warning_label.png|right|200px]]&lt;br /&gt;
&lt;br /&gt;
The 3.3V regulator on Lisa/M is a [http://www.micrel.com/page.do?page=/product-info/products/mic5209.shtml MIC5209-3.3YM] capable of delivering up to 500mA. While it is possible to power this regulator with up to 16V, '''DO NOT''' do this. By default, the UART3 RX pin is pulled up to the input voltage V_IN. For this reason, 5V is the maximum input voltage. Note that the UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting. If one desires to have V_IN at a higher voltage, the jumpers should be adjusted accordingly. As noted, this regulator can handle up to 16V, though experience has shown that this regulator can become very hot in operation with high input voltages, resulting in potential thermal shutdown while in flight. Depending on the expected current draw, it is best to power this regulator with a lower voltage. 5V is the perfect choice. &lt;br /&gt;
&lt;br /&gt;
The onboard 5V regulator on Lisa/M is a [http://www.national.com/pf/LP/LP2992.html LP2992], a low-noise, low-dropout linear regulator capable of delivering up to 250mA. This regulator can be bypassed with JP3, connecting the autopilot V_IN bus directly to the autopilot 5V bus if, for example, one is using an external 5V regulated supply, and a higher current is needed. Unless external use of 5V is required on the ANALOG1 and ANALOG2 headers, the only 5V usage onboard is for the CAN transceiver and the I2C1 level shifter.&lt;br /&gt;
&lt;br /&gt;
When measuring the supply voltage of a battery with the V_BATT pin (could be connected to V_IN through JP2), it is important to note the maximum voltage limit. The voltage divider on the board for measuring with a 3.3V ADC is --'''V_BAT'''--/\/\'''10k'''/\/\--'''V_BAT_MEAS'''--/\/\'''2k2'''/\/\--'''GND'''--. This means that the maximum allowable voltage on V_BATT is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;V\_BAT_{max} = 3.3V*\frac{10k}{2.2k} = 15V&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a higher voltage measurement is desired, another voltage divider is required off-board. Alternatively, one could modify the existing voltage divider (e.g. change 10k resistor to 22k to get 33V maximum). When checking if voltage exceeds the maximum, make sure to consider maximum battery voltage, not nominal voltage (e.g. 4.22V or so for a single lithium cell, not 3.7V nominal, so the maximum number of cells in series is 3, like a 3S LiPo pack).&lt;br /&gt;
&lt;br /&gt;
== Schematic ==&lt;br /&gt;
&amp;lt;gallery widths=250px heights=168px&amp;gt;&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_1.png | LisaM V2.0 Schematic Sheet 1/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_2.png | LisaM V2.0 Schematic Sheet 2/3&lt;br /&gt;
Image:Lisa_m_v2_0_sheet_3.png | LisaM V2.0 Schematic Sheet 3/3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples of Airborne Equipment Electrical Connections ==&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and PWM Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_v2_0_wiring_quadrocopter_spektrum_pwmesc.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This configuration assumes the ESCs have a battery eliminator (BEC) function and provide 5 volts on their 5V pins. Closing JP1 powers Lisa/M and the attached accessories.&lt;br /&gt;
&lt;br /&gt;
When using cheap ATMega or SiLabs-based PWM motor controllers consider replacing their firmware with either [https://github.com/sim-/tgy Simon Kirby] or [https://github.com/bitdump/BLHeli BLHeli] firmware respectively to get useful performance of your multicopter! You can find a firmware compatibility list [https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZRlE here].&lt;br /&gt;
&lt;br /&gt;
=== Quadrocopter, Spektrum Satellite Receivers and I2C Motor Controllers (ESC) ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_quadrocopter_spektrum_i2c_esc_wiring.png|700px]]&lt;br /&gt;
&lt;br /&gt;
This diagram &amp;quot;should&amp;quot; be the same for AscTec as well as Mikrokopter motor controller based airframes.&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers and Elevons Only ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum_elevons.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Fixedwing, Spektrum Satellite Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_fixedwing_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
=== Transitioning [http://wiki.thequadshot.com Quadshot] Using Spektrum Receivers ===&lt;br /&gt;
&lt;br /&gt;
[[File:LisaM_V2_0_wiring_quadshot_spektrum.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Still need: Large Fixed-wing with advanced power system and/or IC engine, PPM example&lt;br /&gt;
&lt;br /&gt;
=== R/C Receivers ===&lt;br /&gt;
One can use traditional PPM receivers as wel as Spektrum DSM2 or compatible receivers for flying your aircraft in manual mode during setup and test phase. The Lisa M can direcly connect to a Spectrum DSM2 satellite receiver. It is even possible to connect two satellite receivers for better redundancy or RC reception. It is&lt;br /&gt;
&lt;br /&gt;
==== Bind your Spectrum DSM receiver ====&lt;br /&gt;
&lt;br /&gt;
It is important to bind your receiver with your transmitter '''via your Lisa board''', not in any other way. The way to do this is via fiddly small molex pins&lt;br /&gt;
&lt;br /&gt;
Before you start make sure you have your airframe configuration already uploaded either via USB or a JTAG cable&lt;br /&gt;
&lt;br /&gt;
* On the connector ANALOG1 have a wire between the GND pin ADC1, located in the middle of the board&lt;br /&gt;
* Power up your autopilot board&lt;br /&gt;
* Hold the bind button on your '''transmitter''', while '''keeping it pressed''' switch on your transmitter&lt;br /&gt;
* Wait.. all light of receiver blink then go steady&lt;br /&gt;
* Let go of your transmitter bind button&lt;br /&gt;
* Power off your Lisa Board&lt;br /&gt;
* remove the wire between GND and ADC1 pins&lt;br /&gt;
* Repower your board, if you have servos connected and wiggle the RC transmitter sticks some sould move&lt;br /&gt;
&lt;br /&gt;
That all, you are done. Only needs to be done '''once''' for your receiver.&lt;br /&gt;
&lt;br /&gt;
=== PPM sum stream input ===&lt;br /&gt;
&lt;br /&gt;
The default pin to capture the PPM sum stream is servo channel 6, but this can be reconfigured to the RX of UART1. To use ppm for your radio, put this in your airframe file in your ap target.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;ppm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- This configuration is optional. Select either one of these (not both) --&amp;gt;&lt;br /&gt;
        &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;UART1_RX&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;!-- &amp;lt;configure name=&amp;quot;RADIO_CONTROL_PPM_PIN&amp;quot; value=&amp;quot;SERVO6&amp;quot;/&amp;gt; --&amp;gt;&lt;br /&gt;
    &amp;lt;/subsystem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra Input ===&lt;br /&gt;
&lt;br /&gt;
Also UART pins can be used as general purpose I/O to be used for PPM input. By default connect your PPM out able receiver to servo pin 6. If you do not have or cannot create a PPM out able receiver, additionally a [[PPM_Encoder | PPM encoder board]] can be used to avoid receiver hardware modification.&lt;br /&gt;
&lt;br /&gt;
=== Use USB as UART1TX + hardware flow control ===&lt;br /&gt;
[[File:Lisam-usb-uart1.jpg]]&lt;br /&gt;
&lt;br /&gt;
The USB_VBUS on the Lisa/M 2.0 can be used as UART1 TX. To do this, a diode has to be removed. Make sure to include a series resistor of 100-3000 Ohm to protect the microcontroller from overcurrents. The 2nd and 3th pin of the USB pads are CTS and RTS respactively. It is recommended to include a series resistor in the RTS line, as this is an outgoing line. &lt;br /&gt;
&lt;br /&gt;
If you want to enable flow control in the software, but don't want to use flow control when no cable is connected to the CTS/RTS, a pulldown resistor of 10 kOhm has to be added between the CTS and the GND. If you do this, take care when connecting UART devices that have a large series resistor in their RTS line. The combination of the pulldown resistor and the series resistor might cause the high-level voltage to drop under the high-level treshold of the microcontroller, causing strange behaviour.&lt;br /&gt;
&lt;br /&gt;
For Example the RTS , mostly a purple wire, is the '''pin 10''' on the Xtend module when set in the module with Hardware flow control (use X-CTU)&lt;br /&gt;
CTS, most blue, on pin 9 of the Xtend&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=380px heights=205px&amp;gt;&lt;br /&gt;
Image:Lisam-diode.JPG | Remove this diode. After removing this diode you can not power the board via USB anymore.&lt;br /&gt;
Image:Lisam-gpio-usb.JPG | Take care of the small distance between the GPIO pins and the USB pads.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCB ==&lt;br /&gt;
&lt;br /&gt;
=== Gerber &amp;amp; Drill Files  ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 gerber &amp;amp; drill files (zip)''''' ''NOT YET AVAILABLE BUT SEE [[Lisa/M#Downloads|Downloads]]''&lt;br /&gt;
Need some generated gerbers and drill files here.&lt;br /&gt;
&lt;br /&gt;
== Assembly ==&lt;br /&gt;
&lt;br /&gt;
===Components Layout===&lt;br /&gt;
&lt;br /&gt;
''NOT YET AVAILABLE BUT SEE [[Lisa/M#Downloads|Downloads]]''&lt;br /&gt;
Need some top and bottom of board images and line drawings here.&lt;br /&gt;
&lt;br /&gt;
=== Bill Of Material ===&lt;br /&gt;
&lt;br /&gt;
'''''Download  Lisa/M v2.0 Bill Of Material (zipped .xls file)''''' ''NOT YET AVAILABLE BUT SEE [[Lisa/M#Downloads|Downloads]]''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCB and assembled boards suppliers ==&lt;br /&gt;
&lt;br /&gt;
Available on [[Get_Hardware|Get Hardware]] page, hopefully :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mechanical Dimensions ==&lt;br /&gt;
&lt;br /&gt;
[[Image:LisaM_V2_0_top_mechanical.png|500px|Lisa/M v2.0 Mechanical Dimensions]]&lt;br /&gt;
&lt;br /&gt;
The overall height of the board including the servo connectors is 10mm. Note that the overall length includes the USB connector. The mounting holes are nominal 2mm diameter (with a bit of clearance).&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
'''Source files'''&lt;br /&gt;
:*download available on GitHub: ''[https://github.com/paparazzi/paparazzi-hardware/tree/master/controller/lisa_m/v2.0 Lisa/M v2.0 Cadsoft Eagle 6 Design]''&lt;br /&gt;
'''Gerber &amp;amp; Drill files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need generated gerbers and drill files&lt;br /&gt;
'''Assembly files'''&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Components layouts (pdf)&lt;br /&gt;
:*download ''NOT YET AVAILABLE'' Need Lisa/M v2.0 Bill Of Material&lt;br /&gt;
&lt;br /&gt;
== Uploading new software ==&lt;br /&gt;
&lt;br /&gt;
New onboard software for the Lisa/M v2.0 can uploaded by connecting your PC via a micro-USB port to the autopilot board. For this the board need to contain a &amp;quot;luftboot&amp;quot; bootloader. All Lisa/M 2.0 from Transition Robotics Inc. come with luftboot already in the board.&lt;br /&gt;
&lt;br /&gt;
An alternative to get your software/flightplane in the board is by using a JTAG connector connected via the 10-pin Samtec connector that is available on the board.&lt;br /&gt;
&lt;br /&gt;
=== Using luftboot ===&lt;br /&gt;
&lt;br /&gt;
First make sure you '''update to the latest stable Paparazzi version''', then you will have support for this bootloader method. By default use the associated DFU loader to program the firmware. Make sure that your airframe file is set to use Lisa/M 2.0 as it's target board.&lt;br /&gt;
&lt;br /&gt;
Currently Paparazzi firmware does not contain the needed software to switch into bootloader mode using software only by USB. To circumvent this shortcoming, you need a small cable to force the bootloader to run. This cable should bridge pin GND and ADC2. Make sure you do not shortcircuit your board.&lt;br /&gt;
&lt;br /&gt;
Once your &amp;quot;Boot mode connector&amp;quot; is inserted, connect the Lisa/M to the PC via a micro-usb cable and it should start in bootloader mode. If the status LEDs cycle up and down, it is in booatloader mode, ready to receive your new flightplan and autopilot control software upgdate.&lt;br /&gt;
&lt;br /&gt;
Note that all of this won't be necessary in the future once a working USB stack stub is added to the latest Paparazzi.&lt;br /&gt;
&lt;br /&gt;
[[File:Luftboot.gif|320px]]&lt;br /&gt;
&lt;br /&gt;
You should disconnect the &amp;quot;Boot mode connector&amp;quot; after enforcing the bootloader. Pressing upload in the Paparazzi Center should now upload new code onto the board.&lt;br /&gt;
&lt;br /&gt;
In the rare case you somehow have removed the luftboot bootloader, you can re-insert this Boatloader by following the instructions of ''Uploading the Paparazzi USB Bootloader''&lt;br /&gt;
&lt;br /&gt;
=== Uploading the Paparazzi USB Bootloader ===&lt;br /&gt;
&lt;br /&gt;
Reading or performing these steps is not needed if you got your Lisa/M 2.0 from Transition Robotics Inc., these boards come with luftboot already preloaded. But in the case you made a board yourself or somehow do not have a preloaded bootloader, or it is gone because of unknown cause, then read this section. It describes the process on how to upload/recover the luftboot bootloader on your Lisa/M 2.0.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/paparazzi/luftboot Luftboot] is a Paparazzi-compatible bootloader for STM32-based autopilots.&lt;br /&gt;
Depending on your vendor, your Lisa/M may already come with a bootloader, in which case you should skip to [[Lisa/M#Uploading new software]]&lt;br /&gt;
&lt;br /&gt;
==== Required components ====&lt;br /&gt;
&lt;br /&gt;
*Floss-JTAG debugger or Blacksphere mini JTAG&lt;br /&gt;
*Lisa/M board&lt;br /&gt;
*PC&lt;br /&gt;
&lt;br /&gt;
==== Procedure ====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Get the [https://github.com/paparazzi/luftboot Luftboot sourcecode from Github] via&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;git clone https://github.com/paparazzi/luftboot.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Change directory into the luftboot/src folder&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;cd ./luftboot/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Build luftboot&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;make clean &amp;amp;&amp;amp; make&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Flash the Lisa/M&lt;br /&gt;
Attach the floss-jtag unit to the PC and connect it to the Lisa/M via the black connector.&lt;br /&gt;
Power the Lisa/M (easiest way is to connect to the PC via a micro-USB cable).&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;make flash DEV_SERIAL=&amp;quot;LM2-ser&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
where &amp;quot;ser&amp;quot; stands for the serial number of your Lisa/M. So for example if you have lisa/m with the serial number 020 this would be:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;make clean &amp;amp;&amp;amp; make flash DEV_SERIAL=&amp;quot;LM2-020&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Connection Diagram ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Boot Sequence ====&lt;br /&gt;
&lt;br /&gt;
* Luftboot&lt;br /&gt;
** Check if ADC2 is configured as output pull down indicating software bootloader request&lt;br /&gt;
*** '''If ADC2 output pull down:''' initialize usb and stay in bootloader mode&lt;br /&gt;
** Setting the ADC2 pin to input pull up&lt;br /&gt;
** Checking if the ADC2 pin is low&lt;br /&gt;
*** '''If ADC2 low:''' initialize USB and stay in bootloader mode&lt;br /&gt;
*** '''If ADC2 high:''' check if there is a payload at 0x8002000&lt;br /&gt;
**** '''If payload detected:''' set vector table pointer to be at 0x8002000 and jump to the reset handler of the payload&lt;br /&gt;
**** '''If payload not detected:''' initialize USB and stay in bootloader mode&lt;br /&gt;
&lt;br /&gt;
==== Luftboot USB permissions ====&lt;br /&gt;
&lt;br /&gt;
[[Installation/Linux#Udev_rules|Copy the udev-rules file]] is needed for the upload software to get permission to use this hardware in your PC for uploading.&lt;br /&gt;
For short: the Python program &amp;quot;stm32_mem.py&amp;quot; needs permission to write to the the Luftboot USB device. If you do not have set this rules already you get an error message, which explanation what is wrong is quite obscure due to the way python-libusb accesses the device.&lt;br /&gt;
&lt;br /&gt;
=== Using JTAG ===&lt;br /&gt;
If you are using the Lisa/M 2.0 target board you still can use JTAG for programming and debugging your paparazzi firmware. To use JTAG flashing configure the ''FLASH_MODE'' in your firmware section:&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;JTAG&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Using JTAG will not overwrite the bootloader by default. To overwrite the luftboot bootloader configure&lt;br /&gt;
:&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;configure name=&amp;quot;NO_LUFTBOOT&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[JTAG]] description;&lt;br /&gt;
* General [[Dev/Debugging|debugging information]];&lt;br /&gt;
* [[DevGuide/JTAG-Debug|JTAG usage]], includes Eclipse uplink tutorial.&lt;br /&gt;
&lt;br /&gt;
==== Quick JTAG Upload Guide ====&lt;br /&gt;
# Connect floss-jtag to Lisa via the cortex cable (little black socket)&lt;br /&gt;
# Attach the UART port on the bottom of the floss-jtag to UART2 on the Lisa.&lt;br /&gt;
# Plug in USB port of the floss jtag&lt;br /&gt;
# Plug in USB port of the Lisa&lt;br /&gt;
# Make sure your airframe uses the &amp;lt;target name=&amp;quot;ap&amp;quot; board=&amp;quot;lisa_m_2.0&amp;quot;&amp;gt; definition&lt;br /&gt;
# Click Build, wait until complete, then click Upload.  You should see the following towards the end:&lt;br /&gt;
{{{&lt;br /&gt;
...&lt;br /&gt;
Info : device id = 0x10016418&lt;br /&gt;
Info : flash size = 256kbytes&lt;br /&gt;
stm32x mass erase complete&lt;br /&gt;
Info : Padding image section 1 with 7972 bytes&lt;br /&gt;
wrote 152576 bytes from file src/paparazzi/var/Hexa_LisaL/ap/ap.elf in 7.498179s (19.871 KiB/s)&lt;br /&gt;
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)&lt;br /&gt;
Info : JTAG tap: stm32.bs tap/device found: 0x06418041 (mfg: 0x020, part: 0x6418, ver: 0x0)&lt;br /&gt;
shutdown command invoked&lt;br /&gt;
}}}&lt;br /&gt;
# Run Flight USB-serial at the baud rate you need (default 57600 for rotorcraft)&lt;br /&gt;
# You may need to change the device to /dev/ttyUSB1, and 'Redo' the Data Link&lt;br /&gt;
&lt;br /&gt;
=== Serial Firmware Upload ===&lt;br /&gt;
&lt;br /&gt;
Firmware upload using the factory integrated bootloader can be useful e.g. if you have overwritten Luftboot accidentally and don´t have access to JTAG.&lt;br /&gt;
&lt;br /&gt;
Due to hardware constraints, the board has to be modified to make use of the bootloader, which is only accessible on UART1:&lt;br /&gt;
# Diode D3 has to be removed (the bigger black brick next to the USB connector). Attention, no more powering via USB after that.&lt;br /&gt;
# BOOT1 has to be set to GND by connecting ACC_DRDY(unused) to GND at the Aspirin pads&lt;br /&gt;
&lt;br /&gt;
Now a boot sequence works as follows:&lt;br /&gt;
#BOOT1 has to be set to 3.3V by use of a jumper cable&lt;br /&gt;
#Connect a 3,3V serial cable (FTDI, MAX232...) to UART1, the TX pin is USB_VBUS&lt;br /&gt;
#Power the board and activate the bootloader program&lt;br /&gt;
&lt;br /&gt;
The according bootloader script can be found at :&lt;br /&gt;
[https://github.com/jsnyder/stm32loader stm32loader from Github]&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;git clone https://github.com/jsnyder/stm32loader.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reload Luftboot, upload luftboot.bin&lt;br /&gt;
&lt;br /&gt;
Serial upload can also be used directly from paparazzi Center by adapting the right path in [https://github.com/paparazzi/paparazzi/blob/dev/conf/Makefile.stm32 Makefile.stm32] for the LOADER argument and setting &lt;br /&gt;
&lt;br /&gt;
&amp;lt;define name=&amp;quot;FLASH_MODE&amp;quot; value=&amp;quot;SERIAL&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
in the target section of the airframe configuration.&lt;br /&gt;
&lt;br /&gt;
== Detailed Hardware Revision History ==&lt;br /&gt;
&lt;br /&gt;
=== Changes Between LISA v1.1 and v2.0 ===&lt;br /&gt;
&lt;br /&gt;
* Lots of silkscreen improvements&lt;br /&gt;
* Added attributes to all parts to make the usage of bom-ex ulp possible.&lt;br /&gt;
* Improved routing to allow teardropping&lt;br /&gt;
* Fixed stm32f1, f2 and f4 compatibility circuit. (has to jump to ground not to 3v3)&lt;br /&gt;
* Connected existing UART RX pullups to the respective connector power pins instead of 3v3. To prevent connecting 5V over IO pin to the 3v3 power rail.&lt;br /&gt;
* Added pullups on all UART RX lines to prevent undesired floatation.&lt;br /&gt;
* LED's are connected to 3v3 now. To make sure we don't have an issue with voltage tolerance on the gpio pins.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Hardware Change Requests ==&lt;br /&gt;
&lt;br /&gt;
If you have a Lisa/M 2.0 and in the process of using it you come up with something you find annoying, dangerous, or restricting, add your hardware update requests here. Better still, modify the Lisa schematics yourself and show your new improvements if you are skilled enough to do this.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace BMP085 with MS5611 (the MS5611 seems to be better in performance then the BMP but it is more expensive and seems to be more difficult to obtain. &lt;br /&gt;
** A: Using a MS5611 is possible through using a Aspirin v2.1 board&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace 7 Pin CAN with molex with something less risky to be inserted in 7 Pin SPI in relation to powering the board via CAN molex.&lt;br /&gt;
&lt;br /&gt;
* REQ: Separate spot for external power if powered via separate battery. Realizing we can via Servo ports by Bridge J1 but still like to measure board voltage then and have a way to add power without mistakenly insert I2CCAN Molex conector into SPI Molex on board connector. Thus a separate CAN and Power plug. Power on regular four pin molex with GND, V+5, , V_BATT, V_I (Current sense). Option to have thicker wire to be soldered to the board, for power hungry setups and other issues connectors for power are not a good idea.&lt;br /&gt;
&lt;br /&gt;
* REQ: Replace Aspirin IMU board with InvenSense MPU-9150 and bring the MS5611 back onto the Lisa/M board to reduce footprint, mass, and manufacturing cost once the 9150 becomes readily available(if at al with SPI) and is tested to perform well.&lt;br /&gt;
[[Category:Lisa]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
	<entry>
		<id>http://wiki.paparazziuav.org/w/index.php?title=RC_Receivers_and_Radios&amp;diff=13373</id>
		<title>RC Receivers and Radios</title>
		<link rel="alternate" type="text/html" href="http://wiki.paparazziuav.org/w/index.php?title=RC_Receivers_and_Radios&amp;diff=13373"/>
		<updated>2012-10-25T21:42:37Z</updated>

		<summary type="html">&lt;p&gt;Jkg: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 2.4GHz Systems==&lt;br /&gt;
If using a Lisa/M or Lisa/L autopilot board the whole range of Specktrum/JR transmitters can be used with 1 or 2 Spektrum/JR/Hobbyking satellite receivers. For other autopilot boards to use a 2.4 GHz system a few requirements are necessary&lt;br /&gt;
# Must use [[PPM_Encoder | PPM Encoder]] board. (See [[Get_Hardware|Get Hardware]] page for suppliers) (Except for the Futaba FASST 7 channel receiver R617FS that has a 5 (not 7) channels combined pulse)&lt;br /&gt;
# Needs a three position switch&lt;br /&gt;
# Ability to set failsafe to any or at least 1 channel (pprz-mode) as desired&lt;br /&gt;
# At least one extra channel beyond those needed to control the servos and motor. (throttle-roll-pitch-mode)&lt;br /&gt;
=== Radios ===&lt;br /&gt;
&lt;br /&gt;
====Futaba FASST 7-channel receiver====&lt;br /&gt;
&lt;br /&gt;
[[Image:rs617fasst.jpg|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
* Pin 8 (upper right corner in picture) of the small IC on the right contains 5 PPM pulses and can go directly to paparazzi. Pulse 6 and 7 go directly to the servos. &lt;br /&gt;
* Best is to remove the resistors of one of the channels and connect a small wire to pin 8 to get the combined 5 pulses on the robust 1/10th inch header.&lt;br /&gt;
* Do not forget to use channel 3 (only failsafe channel) as mode switch with fail safe &amp;quot;throttle off&amp;quot; as mode 2.&lt;br /&gt;
&lt;br /&gt;
====Robbe RASST 7 &amp;amp; 8 channel receivers ====&lt;br /&gt;
Robbe has produced line of Futaba FASST compatible receivers that can output only PPM which results ablility to plug into autopilot without encoder.&lt;br /&gt;
* [http://www.robbe.de/empfaenger-r-6007-sp-2-4-g-rasst.html R6007SP 2,4 GHz RASST] - 7 channel, for small aircraft&lt;br /&gt;
* [http://www.robbe.de/empf-r6107sp-2-4-ghz-rasst.html R6107SP 2,4 GHz RASST] - 7 channel, &amp;gt;1000m range&lt;br /&gt;
* [http://www.robbe.de/empf-r6008sp-2-4-ghz-rasst.html R6008SP 2,4 GHz RASST] - 8 channel, upto 3000m range&lt;br /&gt;
&lt;br /&gt;
====Spektrum DX-7====&lt;br /&gt;
[[Image:DX7.jpg|thumb|left]]&lt;br /&gt;
*7 Channels &lt;br /&gt;
* 20-Model memory&lt;br /&gt;
* Airplane and Heli software&lt;br /&gt;
* Switch assignment&lt;br /&gt;
* P-mixes&lt;br /&gt;
* Includes 4 powerful DS821 digital servos with high-tech resin gears&lt;br /&gt;
* 3-axis dual rate &amp;amp; expo&lt;br /&gt;
* 3-position flap (Airplane)&lt;br /&gt;
* 5-point throttle curve (Heli)&lt;br /&gt;
* 3 flight modes plus hold (Heli)&lt;br /&gt;
* Gyro programming (Heli)&lt;br /&gt;
* CCPM, 2-servo 90°, 3-servo 90°, &amp;amp; 3-servo 120°&lt;br /&gt;
* Price $320-$350&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===== Switch Assignment =====&lt;br /&gt;
To assign the three position switch to any other channel but channel 7 follow these steps:&lt;br /&gt;
# Set up aux2(refers to aux2 on rx not the switch on the tx. aka ch7) with its input selected as 3 pos switch.&lt;br /&gt;
# Set up this mix - Gear to Gear (Up=-100, Down=-100, Offset =0). This inhibits the gear switch.&lt;br /&gt;
# Set up another mix - Aux2 to Gear (Up=100, Down=100, Offset = 0).&lt;br /&gt;
Notes: &lt;br /&gt;
#Gear on a DX-7 Air is Channel 5 and AUX2 is CH7. Once again i am referring to the inputs which are labeled on the RX not what the switches are named on the TX. If your using a DX-7 heli please substitute the names for what the rx channels are named into this guide&lt;br /&gt;
# DX7 Heli the 3-pos switch is named &amp;quot;flight mode&amp;quot;&lt;br /&gt;
# DX7 Air the 3-pos switch is named &amp;quot;flaps&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Failsafe Setup =====&lt;br /&gt;
To set up the mode channel (3 pos switch) to default to auto2 if connection is lost between rx and tx follow these steps:&lt;br /&gt;
# Put 3 position Switch into AUTO2 Position&lt;br /&gt;
# Put in bind plug&lt;br /&gt;
# Power up&lt;br /&gt;
# REMOVE the bind plug&lt;br /&gt;
# Power up Tx while pushing bind button&lt;br /&gt;
# Wait until light becomes steady and not blinking (it may become steady right off but will then start blinking again so let it go at least 5 seconds)&lt;br /&gt;
&lt;br /&gt;
===Receivers===&lt;br /&gt;
====Jeti Duplex 2.4 GHz Receiver Rsat 2====&lt;br /&gt;
[[Image:Jeti_Duplex_Rsat2.jpg|thumb|left|Jeti RSat 2]]&lt;br /&gt;
* Outputs PPM, no soldering or PPM board required&lt;br /&gt;
* Only 12 gramms&lt;br /&gt;
* Full duplex technology provides safe radio link and redundant telemetry to standard paparazzi telemetry.&lt;br /&gt;
* [http://www.jetimodel.cz/index.php?page=products&amp;amp;old=0&amp;amp;category=4 Transmitter module] can be installed in any receiver.&lt;br /&gt;
See the official [http://www.jetimodel.cz/index.php?page=product&amp;amp;id=165 Homepage of Jeti] or the [http://www.mikrokopter.de/ucwiki/JetiDuplex MikroKopter Wiki].&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
====Spektrum 2.4Ghz Satellite Receiver - Lisa/L implementation====&lt;br /&gt;
[[Image:Lisa l hex 1.jpg|thumb|right|Connection View]] &lt;br /&gt;
[[Image:SPM9545-250.jpg|thumb|left|Remote Receiver [SPM9545]]] &lt;br /&gt;
* [http://www.spektrumrc.com/Products/Default.aspx?ProdID=SPM9545 Specifications]&lt;br /&gt;
* Lisa/L Radio_Control_Spektrum_Primary_Port = Uart 3&lt;br /&gt;
* Lisa/L Radio_Control_Spektrum_Secondary_Port = Uart 5&lt;br /&gt;
* arch files:~/paparazzi/sw/airborne/arch/stm32/subsystems/radio_control/spektrum-arch.h and .c&lt;br /&gt;
* Additional hardware - &lt;br /&gt;
[http://parts.digikey.com/1/parts/355490-conn-housing-5pos-1-25mm-51021-0500.html Molex CONN HOUSING 5POS 1.25MM - 51021-0500], &lt;br /&gt;
&lt;br /&gt;
[http://parts.digikey.com/1/parts/355493-conn-housing-8pos-1-25mm-51021-0800.html Molex CONN HOUSING 8POS 1.25MM - 51021-0800], &lt;br /&gt;
&lt;br /&gt;
[http://uk.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&amp;amp;R=2799544 Molex Socket to free end crimped lead,300mm L], &lt;br /&gt;
&lt;br /&gt;
[http://parts.digikey.com/1/parts/270897-conn-term-female-26-28awg-tin-50079-8000.html Molex CONN TERM FEMALE 26-28AWG TIN], &lt;br /&gt;
&lt;br /&gt;
[http://parts.digikey.com/1/parts/1806245-hand-tool-26-32awg-crimp-638190300.html Molex HAND TOOL 26-32AWG CRIMP]&lt;br /&gt;
* Transmitter options - Spektrum DX6, DX7(see above), DX8, bind compatible JR units up to 12 channels and those bearing the Specktrum DM9 module - note these transmitters must be channel order compatible with Spektrum's protocol (in fact all transmitters that use Spektrum protocol have the same channel ordering regardless which stays consistent across different modes (ie throttle on left / right etc)))  - [http://code.google.com/p/er9x/ here is an example] &lt;br /&gt;
 &lt;br /&gt;
=====Installation=====&lt;br /&gt;
# Cut off original receiver connector and crimp molex connector terminals to the three wires.&lt;br /&gt;
# Insert terminals into appropriate positions-[http://paparazzi.enac.fr/wiki_images/LisaL_v1_0_schematic_3.png CON_USART3]-of the 5 way connector - black to pos1 = GND, orange to pos3 = +3v3, grey to pos5 = STM_USART3_RX.            &lt;br /&gt;
&lt;br /&gt;
=====Bind plug===== &lt;br /&gt;
# Take the 8 way molex connecter and create a loop between pos1 = GND and pos4 = XXX_STM_SPARE_2. This plug is placed in the-[http://paparazzi.enac.fr/wiki_images/LisaL_v1_0_schematic_3.png CON_SPARE]-receptacle housing before power-up to enable the receiver binding state.    &lt;br /&gt;
&lt;br /&gt;
=====Configuration=====&lt;br /&gt;
* Set the spektrum radio parameters for Lisa/M or Lisa/L ap in ~/paparazzi/conf/airframes.xml file. Check 'esden' directory as a possible rotorcraft example. Refer to ~/paparazzi/sw/airborne/arch/stm32/subsystems/radio_control/spektrum-arch.h and .c for other options. Be sure to set actuators, rotor configuration/mixes and channel reversal parameters that are appropriate for the rotorcraft/aircraft (note &amp;quot;lisa_l_1.0&amp;quot; can also be &amp;quot;lisa_m_1.5&amp;quot; or &amp;quot;lisa_m_2.0&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;firmware name=&amp;quot;rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;target name=&amp;quot;ap&amp;quot; board=&amp;quot;lisa_l_1.0&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--      &amp;lt;define name=&amp;quot;BOOZ_START_DELAY&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt; --&amp;gt;&lt;br /&gt;
       &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;spektrum&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;subsystem name=&amp;quot;actuators&amp;quot;     type=&amp;quot;mkk&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;subsystem name=&amp;quot;telemetry&amp;quot;     type=&amp;quot;transparent&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;define name=&amp;quot;RADIO_MODE&amp;quot; value=&amp;quot;RADIO_AUX1&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;define name=&amp;quot;RADIO_KILL_SWITCH&amp;quot; value=&amp;quot;RADIO_GEAR&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;target name=&amp;quot;stm_passthrough&amp;quot; board=&amp;quot;lisa_l_1.0&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;subsystem name=&amp;quot;radio_control&amp;quot; type=&amp;quot;spektrum&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;subsystem name=&amp;quot;imu&amp;quot; type=&amp;quot;b2_v1.2&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/target&amp;gt;&lt;br /&gt;
*Create a new transmitter 'airplane' model. Do not introduce any mixes or change the endpoints, subtrims etc. Note that a radio.xml file is not required for this implementation, unlike analogue RC directed autopilots.    &lt;br /&gt;
*Upload ap software in the usual way. &lt;br /&gt;
*Unplug the aircraft battery. Turn transmitter off. Insert the bind plug (see above) in the 8 way CON_SPARE receptacle. Power up the aircraft - specktrum receiver LED should be flashing in readiness to bind. Press and hold bind button on transmitter while turning on. Receiver LED should stop flashing after a few moments to confirm it is bound. Turn everything off in preparation to start in the normal way. Note that the transmitter should now be turned on first to enable the spektrum receiver to acknowledge it.       &lt;br /&gt;
*Should be ready to fly.  &lt;br /&gt;
*Adding a second spektrum satellite receiver requires different wiring dependent on the Lisa board version. As the pinouts to uart5 differ between Lisa-L v1.0 and v1.1. Seek advice from the [http://lists.gnu.org/archive/html/paparazzi-devel/2011-01/index.html paparazzi mailing list] prior to making this addition.&lt;br /&gt;
&lt;br /&gt;
To enable the use of the secondary satellite receiver you have to add two lines to your firmware section in the airframe file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;define name=&amp;quot;RADIO_CONTROL_SPEKTRUM_SECONDARY_PORT&amp;quot; value=&amp;quot;UART5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;define name=&amp;quot;OVERRIDE_UART5_IRQ_HANDLER&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCM Systems ==&lt;br /&gt;
&lt;br /&gt;
Most of the known PCM transmitter also can be set to PPM mode. If this is set, then the regular description for PPM applies since the PCM receiver like a JR/Gaupner SMC16 Scan can output PPM perfectly. &lt;br /&gt;
&lt;br /&gt;
If PPM out is not setable on your transmitter then the following applies:&lt;br /&gt;
&lt;br /&gt;
# Must use ppm encoder board. (See [[Get_Hardware|Get Hardware]] page for suppliers)&lt;br /&gt;
# Needs a three position switch&lt;br /&gt;
# Ability to set failsafe to any channel as desired&lt;br /&gt;
# At least one extra channel beyond those needed to control the servos and motor.&lt;br /&gt;
&lt;br /&gt;
== PPM Based Systems ==&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
The [[Radio_Control]] page describes how to set up the radio.xml config file.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
To use a 26/27/35/40/41/72/ MHz **(uses PPM) system a few requirements are necessary&lt;br /&gt;
# Need a Transmitter with a three position switch&lt;br /&gt;
# At least one extra channel beyond those needed to control the servos and motor.&lt;br /&gt;
# A modified receiver which outputs a full ppm signal.&lt;br /&gt;
&lt;br /&gt;
===Adding a 3 position switch===&lt;br /&gt;
===== Futaba T6EXAP =====&lt;br /&gt;
For this particular transmitter, the Potentiometer on channel 6 can be replaced with a 3 position switch. Channel 5 appears not to be connected to an ADC converter; therefore it will not support a 3 position switch.&lt;br /&gt;
#Disconnect the potentiometer being careful not to shorten the wires&lt;br /&gt;
#Solder the switch and resistors onto the wires using the wiring diagram as a reference. (Any two equal value resistors should work). I used 10k resistors.&lt;br /&gt;
[[Image:SwitchWiringDiagram.JPG|thumb|left|Switch wiring diagram]]&lt;br /&gt;
[[Image:3positionswitch.JPG|thumb|left|Switch installed in transmitter]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
Suitable 3 position switches:&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
RS Components: [http://australia.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&amp;amp;R=344-710 344-710]&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
Mouser: [http://au.mouser.com/Search/Refine.aspx?Keyword=633-M202402-RO 633-M202402-RO]&lt;br /&gt;
&lt;br /&gt;
=== R/C Receiver Interface===&lt;br /&gt;
All versions of the Paparazzi autopilot include a connector to interface with a standard R/C receiver for manual or semi-autonomous control during the testing and tuning phases.  Two interface options exist:&lt;br /&gt;
# Tap into the PPM signal running between the RF section and the servo driver of your receiver and route it to the Paparazzi.  Let the Paparazzi generate individual servo signals and connect all servos directly to the autopilot.  This method requires only 3 wires to the receiver (power and PPM), is compatible with all Paparazzi autopilots, and provides 8 manual R/C channels and the potential for more autonomous channels regardless of the capability of the R/C receiver.&lt;br /&gt;
# Cut the PPM trace and route it thru the autopilot and back to the receiver, using the servo driver IC on your R/C receiver to drive the servos.  This option requires 4 wires (Ground, PPM-in, PPM-out, Reset) and your receiver must have a supported servo driver IC.  This allows you to use the large servo connectors on your R/C receiver and does not require any modification to your servos or ESC but does require you to cut a trace on your R/C receiver and limits the number of servos to the capacity of your receiver.  Compatible with Classix and Tiny 1.1.&lt;br /&gt;
# Note that on the Classix the PPM_in pin is FOO2... &lt;br /&gt;
[[Image:RC_Receiver_Timing_Diagram.jpg|thumb|left|PPM Timing Diagram&amp;lt;small&amp;gt;Note 1: Exact value not critical. Depending on RC Transmitter type &amp;amp; Manufacturer.&amp;lt;br&amp;gt;Note 2: Depending on Transmitter number of Channels and t,,n,, durations.&amp;lt;br&amp;gt;Note 3: Not critical. Depending on Synchro detection method.&amp;lt;/small&amp;gt;]]&lt;br /&gt;
[[Image:RC_Receiver_Tiny.jpg|thumb|left|3-Wire setup, driving servos from the autopilot]]&lt;br /&gt;
[[Image:RC_Receiver_classix.jpg|thumb|left|4-Wire setup, driving servos from the R/C receiver]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common demux chips ===&lt;br /&gt;
&lt;br /&gt;
Typical used chips are the cmos [http://www.doctronics.co.uk/4015.htm 4015] and [http://www.doctronics.co.uk/4017.htm 4017]. &lt;br /&gt;
&lt;br /&gt;
The 4015 uses either pin 1 or pin 9 for the clock and the input is on 7 and 15. The 4017 has just one shift register and has its clock input on pin 14 and the enable on pint 13.&lt;br /&gt;
&lt;br /&gt;
In most receivers you are after the clock; though some may be pulsed; in which case you need the enable. Note that the 4017 enable has inverted logic (low to be enabled) whereas the input on the 4015 can be either (typically high). If the enable pin is held low (4017) or if the input pin (4015) is held high always;e.g. connected to the ground or the Vcc - then it is fair to assume that the PPM signal is most propably on the clock input. &lt;br /&gt;
&lt;br /&gt;
=== Recommended 35/40Mhz R/C Receivers ===&lt;br /&gt;
&lt;br /&gt;
Note that there is information on modifying other receiver models at [http://mikrokopter.de/ucwiki/RC-Empf%C3%A4nger mikrokopter.de]. It's in German however the pictures contain most of the information or use google translate.&lt;br /&gt;
Shielded wire is recommended for receiver and autopilot connection, as unshielded one may cause noise in receiver. &lt;br /&gt;
&lt;br /&gt;
=====Futaba FP-R116FB 6 Channel FM 35MHz receiver=====&lt;br /&gt;
[[Image:Rc_fut_web.jpg|thumb|left|Wiring of a Futaba R136]]&lt;br /&gt;
*Orange wire is connected to PPM signal&lt;br /&gt;
*Red wire is connected to VCC&lt;br /&gt;
*Brown wire is connected to GND&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Futaba R136F 6 Channel FM receiver=====&lt;br /&gt;
[[Image:rx_futaba136.jpg|thumb|left|Wiring of a Futaba R136]]&lt;br /&gt;
*41 MHz&lt;br /&gt;
*White wire is connected to PPM signal&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
=====Futaba R168DF 8 Channel dual FM receiver=====&lt;br /&gt;
[[Image:rx_futaba168df.jpg|thumb|left|Wiring of a Futaba R168DF]]&lt;br /&gt;
*35 MHz&lt;br /&gt;
*PPM wire is connected to 862 receiver pin on the board. VCC and GND is on the 8/B original position.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====ACT Micro-6 FM receiver=====&lt;br /&gt;
[[Image:rx_act_micro-6.jpg|thumb|left|Wiring of a ACT Micro-6]]&lt;br /&gt;
*Available in 35 or 40 MHz versions&lt;br /&gt;
*White wire is connected to PPM signal&lt;br /&gt;
*[http://www.acteurope.com/Micro_6anl.pdf Datasheet (German)]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====ACT DSL-4top [http://www.mikrokopter.de/ucwiki/DSL4top mikrokopter.de] version=====&lt;br /&gt;
[[Image:DSL4top.jpg|thumb|left|DSL-4top mikrokopter.de version]]&lt;br /&gt;
* Special version for mikrokopter.de - Only available in their [https://www.mikrocontroller.com/index.php?main_page=product_info&amp;amp;products_id=215&amp;amp;zenid=8ce8bab70f3e9d684e01f724316d9690 shop]!&lt;br /&gt;
* '''Outputs PPM directly''' on the channel 1 connector!&lt;br /&gt;
* No soldering necessary&lt;br /&gt;
* ACT Lifetime warranty&lt;br /&gt;
* Sells for ~45 euro&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Futaba R115F 5 Channel FM receiver=====&lt;br /&gt;
[[Image:pprz_rx115.jpg|thumb|left|Wiring of a Futaba R115]]&lt;br /&gt;
*Available in 35 and 40 MHz versions&lt;br /&gt;
*White wire is connected to PPM signal&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
=====JETI REX 5 plus (no MPD) receiver=====&lt;br /&gt;
[[Image:520_Jeti_5_plus.jpg|thumb|left|Wiring of a REX 5]]&lt;br /&gt;
&lt;br /&gt;
*Popular Czech made micro r/c receiver, available in 35 or 40 MHz versions&lt;br /&gt;
*´folded´ PCB design with parts inside, mostly inaccessable&lt;br /&gt;
*Small grey wire is connected to via with PPM signal&lt;br /&gt;
*Unusual connector used for testing, soldering recommended&lt;br /&gt;
*shielded wire recommended, this one taken from PC parts recycling (former soundcard to m/b connector cable)&lt;br /&gt;
*[http://www.jetimodel.cz/eng/navody_en/rex5_eng.pdf Datasheet (English)]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:DSC02414.JPG|thumb|left|other Layout of REX 5]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Receiver RX-7-SYNTH IPD receiver [http://www.multiplex-rc.de/hp/produkte/artikel_detail.jsp?lfdnr=55880&amp;amp;action=add2notice&amp;amp;qty=1&amp;amp;cachenepper=1227896925116 Multiplex-rc.de]=====&lt;br /&gt;
[[Image:RX-7-SYNTH_IPD.jpg|thumb|left|Wiring of RX-7-SYNTH IPD]]&lt;br /&gt;
&lt;br /&gt;
*Available in 35, 36 and 40 MHz versions&lt;br /&gt;
*A compact, high-quality 7-channel single-conversion FM / PPM IPD receiver&lt;br /&gt;
*Easy modification through connectors, see pictures&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Protech 5FM 35 mHz Receiver ====&lt;br /&gt;
&lt;br /&gt;
The low cost Protech '5FM' receiver makes use of an SMD version of the standard 74AHC164[http://www.ic-on-line.cn/IOL/datasheet/74ahct164_18057.pdf] 8 bit shift register; you are after PIN 1 of this chip. The circuit board has a testpad for just this pin at the top side of the circuit board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:protech-5fm.jpg|Figure 1. &amp;lt;br&amp;gt;Protech 5FM 35 mHZ Receiver, mark 2&lt;br /&gt;
Image:protech-5fm-pad.jpg|Figure 2. &amp;lt;br&amp;gt; PPM tap location for the Protech 5FM receiver, near the 74AHC164 shift register&lt;br /&gt;
Image:protech-5fm-scope.jpg|Figure 3.&amp;lt;br&amp;gt; Protech 5FM PPM signal - not very clean/digital&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two physical versions exist; the older one [http://www.protech.be/Manuals/PRO205manual%20web.pdf] and a newer one pictured (fig 1). It has been distributed by protech with various ready-to-fly planes; such as the Skyraider[http://www.modelbouwforum.nl/forums/beginners/50677-protech-skyraider.html].&lt;br /&gt;
&lt;br /&gt;
The solder/testpad you are after the one right next the 74x164 chip its pin 1. In this image it has a jellow wire soldered to it (the yellow wire at the top left is the normal antenna connector (fig 2). Note however that the signal is not very clean (1v/div) - which may cause issues - as shown in the above image (fig 3). &lt;br /&gt;
&lt;br /&gt;
This is further compunded by the relatively noisy electrical engines; which are not brushless. A ferrite coil does not seem to help enough - Papparazi and GPS loose sync often through Xbee. Replacing the engine by a brushless outrunnen resolve the issue completely.&lt;br /&gt;
&lt;br /&gt;
==== Profi Penta 35 MHz ====&lt;br /&gt;
[[Image:DSC00547.JPG]]&lt;br /&gt;
[[Image:DSC00545.JPG]]&lt;br /&gt;
&lt;br /&gt;
=== Recommended 72Mhz R/C Receivers ===&lt;br /&gt;
====Castle Creations [http://www.castlecreations.com/products/berg_ms4l.html Berg 4L]====&lt;br /&gt;
[[Image:berg4L.jpg|thumb|Wiring of a Berg 4L]]&lt;br /&gt;
* Expect fantastic performance from these $40 USD parts but be warned that they are known to have unreliable crystal sockets and brittle antenna wire.  The ''Berg 7'' channel receiver should work equally well and is known to have a better crystal socket - note that either receiver will provide '''8 channels''' in manual R/C mode when used with Paparazzi.  Note: the rugged ''Berg 4'' cannot be modified, only the ''Berg 4L'' and ''Berg 7''.&lt;br /&gt;
To Modify a Berg4L, follow these instructions:&lt;br /&gt;
# Remove the shrink wrap. Use a good knife and be careful to not damage any of the components on the receiver. I would recommend that you cut on the sides (edge of the PCB) to be sure to avoid damaging the shielding&lt;br /&gt;
# Desolder the headers. We will not use them with tiny AP as the servos are connected directly to the AP. This is pretty easy to do when you have a hot air rework station. If you don't have one, your best bet is to cut the header off and remove the left over pins one by one with a regular iron. There is a piece of shielding material that is connected to one of the ground pins of the header. You need to remove it carefully from the header without damaging it and re-solder it to the gnd pad.&lt;br /&gt;
# You need to solder 3 wires to the receiver. Gnd, +5V and PPM. To locate the PPM signal, first locate the PIC micro controller close to the location of the headers. The PPM signal is on the corner pin closest to the corner of the receiver. Soldering a 28guage wire directly to the PIN isn't very difficult. For the power connection, use the pads that were used for the header. The outside pin is Gnd, the second pin is +5V. What I did is solder the wires on the pad going straight down, then I looped the 3 wires 360 degrees and glued them to the PCB with hot glue. This provides good strain relief.&lt;br /&gt;
# While you have the PCB in your hands, take the opportunity to remove the crystal connector and solder your crystal directly to the PCB for added reliability.&lt;br /&gt;
# I also used some hot glue to add more strain relief to the antenna&lt;br /&gt;
# Use some large shrink wrap to cover the entire receiver again&lt;br /&gt;
=====Hitec Electron 6 72MHz Reciever=====&lt;br /&gt;
This was written for MNAV from crossbow but is still usable with PPRZ.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Electron6mod.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Corona Synthesized Dual-Conv Receiver 8Ch=====&lt;br /&gt;
[http://www.corona-rc.com/coproductshowE.asp?ArticleID=63 manual] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This receiver is available in 27,35,36,40,72 mhz and a Synthesized receiver, meaning you do not need to change frequency crystals.&lt;br /&gt;
&lt;br /&gt;
How to modify for combined signal&lt;br /&gt;
&lt;br /&gt;
# Cut the 8th channel PWM output pin near the PCB.&lt;br /&gt;
# Connected a pin from the Atmel (see picture) to the 8th channel PWM signal. (optionally, weaving the wire through some holes on the board.) Make sure you have a fine tip on your soldering iron and a magnifying glass strapped to your head! &lt;br /&gt;
# Glue the wire down (CA works)&lt;br /&gt;
# Be sure to glue the pin that you cut in place (previously, being soldered to the board was holding the pin in place)&lt;br /&gt;
&lt;br /&gt;
It is maybe possible to reprogram the atmel with your own firmware. If you succeed in this plz add relevant info here.&lt;br /&gt;
&lt;br /&gt;
That pin provides a 1V to 2V signal, it works with the PPRZ, although its a bit gittery (the slew rate is not real good).&lt;br /&gt;
[[Image:Corona_Synthesized_Receiver_72Mhz_bottom.jpg|thumb]]&lt;br /&gt;
[[Image:Corona_Synthesized_Receiver_72Mhz_top.jpg|thumb]]&lt;br /&gt;
[[Image:Corona_Synthesized_Receiver_72Mhz_top_atmel.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==433MHz UHF Systems==&lt;br /&gt;
&lt;br /&gt;
Note that in most countries an amateur radio license is required to use 433MHz UHF.&lt;br /&gt;
&lt;br /&gt;
===Scherrer UHF===&lt;br /&gt;
&lt;br /&gt;
[[Image:ScherrerUHF.jpg|thumb|left|Scherrer UHF Rx]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.webx.dk/rc/uhf-link3/uhf-link3.htm Scherrer UHF] is a high quality diversity radio control system. It has a PPM output and can be connected directely to Paparazzi. A ppm encoder board is not required. It has an RSSI output.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ImmersionRC EzUHF===&lt;br /&gt;
&lt;br /&gt;
[[Image:EzUHFTx.jpg|thumb|left|ImmersionRC Tx]]&lt;br /&gt;
&lt;br /&gt;
The [http://www.immersionrc.com/products.htm ImmersionRC EzUHF] is a high quality diversity radio control system. The recent firmwares have a PPM output on Ch. 1, but this needs to be activated through the PC configuration software with the proper firmware loaded. It connects directly to EzOSD and the TrackR2 which enables RSSI monitoring and head tracking for FPV.&lt;br /&gt;
&lt;br /&gt;
Some people had issues with the exact timing, where the ROLL channel disappeared. If the radio has more than 6 channels, there may be methods to slave another channel to the roll channel (usually for the operation of dual ailerons). The ezuhf configuration file is using this method, where channel 1 is copied to channel 6. The EzUHF modules receive the PPM output stream from the radio and need to interpret it. For this reason, the ezuhf configuration file should be verified for proper functioning and you may find that channels are remapped to others with different purposes.&lt;br /&gt;
&lt;br /&gt;
Search &amp;quot;sander style&amp;quot; antennas for a way to build your own cheap, high-quality antennas for these rx modules and which provide a range well beyond the horizon.&lt;br /&gt;
&lt;br /&gt;
See [http://www.immersionrc.com/EzUHF.htm EzUHF manual+firmware] for more information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flight mode switch ==&lt;br /&gt;
&lt;br /&gt;
A important requirement is a three way flight mode switch to choose between the flight modes MANUAL, AUTO1 and AUTO2.&lt;br /&gt;
&lt;br /&gt;
Cheap entry level radios often don't have this. As a workaround two two-position switches can be used.&lt;br /&gt;
&lt;br /&gt;
The switch designated to RADIO_MODE will switch between MANUAL and AUTO&lt;br /&gt;
And a second switch designated to RADIO_AUTO_MODE one will select between the different AUTO MODES if the first switch is set to AUTO.&lt;br /&gt;
{{Box Code|conf/airframes/myplane.xml|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;firmware name=&amp;quot;fixedwing or rotorcraft&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;define name=&amp;quot;RADIO_MODE&amp;quot; value=&amp;quot;RADIO_AUX2&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;define name=&amp;quot;RADIO_AUTO_MODE&amp;quot; value=&amp;quot;RADIO_AUX1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/firmware&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This feature is available since v3.9.2.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]] [[Category:User_Documentation]]&lt;/div&gt;</summary>
		<author><name>Jkg</name></author>
	</entry>
</feed>