diff --git a/conf/airframes/flixr_discovery.xml b/conf/airframes/flixr_discovery.xml
index 2f4019f0cc..67f58b3f8e 100644
--- a/conf/airframes/flixr_discovery.xml
+++ b/conf/airframes/flixr_discovery.xml
@@ -40,7 +40,7 @@ http://paparazzi.enac.fr/w/index.php?title=Theory_of_Operation
-
+
diff --git a/conf/autopilot/subsystems/fixedwing/imu_booz.makefile b/conf/autopilot/subsystems/fixedwing/imu_booz.makefile
index 3a203f0da1..8efad96332 100644
--- a/conf/autopilot/subsystems/fixedwing/imu_booz.makefile
+++ b/conf/autopilot/subsystems/fixedwing/imu_booz.makefile
@@ -1,84 +1 @@
-# Hey Emacs, this is a -*- makefile -*-
-#
-# Booz2 IMU booz2v1.2
-#
-#
-# required xml:
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-
-#
-# param: MAX_1168_DRDY_PORT
-
-
-
-# imu Booz2 v1.0, v1.1, v1.2, YAI v1.0
-
-imu_CFLAGS += -DIMU_TYPE_H=\"subsystems/imu/imu_b2.h\" -DUSE_IMU
-imu_srcs += $(SRC_SUBSYSTEMS)/imu.c
-imu_srcs += $(SRC_SUBSYSTEMS)/imu/imu_b2.c
-imu_srcs += $(SRC_ARCH)/subsystems/imu/imu_b2_arch.c
-
-imu_srcs += peripherals/max1168.c
-imu_srcs += $(SRC_ARCH)/peripherals/max1168_arch.c
-
-#ifeq ($(ARCH), lpc21)
-imu_CFLAGS += -DSSP_VIC_SLOT=9
-imu_CFLAGS += -DMAX1168_EOC_VIC_SLOT=8
-#else ifeq ($(ARCH), stm32)
-#imu_CFLAGS += -DUSE_SPI2 -DUSE_DMA1_C4_IRQ -DUSE_EXTI2_IRQ -DUSE_SPI2_IRQ
-#imu_CFLAGS += -DMAX_1168_DRDY_PORT=$(MAX_1168_DRDY_PORT)
-#imu_CFLAGS += -DMAX_1168_DRDY_PORT_SOURCE=$(MAX_1168_DRDY_PORT_SOURCE)
-#imu_CFLAGS += -DUSE_I2C2 -DUSE_EXTI9_5_IRQ
-#endif
-
-ap.srcs += $(imu_srcs)
-ap.CFLAGS += $(imu_CFLAGS)
-
-#
-# Simulator
-#
-
-sim.CFLAGS += -DIMU_TYPE_H=\"subsystems/imu/imu_b2.h\"
-#FIXME, should be HMC5843
-sim.CFLAGS += -DIMU_B2_MAG_TYPE=IMU_B2_MAG_AMI601
-#FIXME, should be verision 1.2
-sim.CFLAGS += -DIMU_B2_VERSION_1_1
-sim.srcs += $(SRC_SUBSYSTEMS)/imu.c
-sim.srcs += $(SRC_SUBSYSTEMS)/imu/imu_b2.c
-sim.srcs += $(SRC_ARCH)/subsystems/imu/imu_b2_arch.c
-
-sim.srcs += peripherals/max1168.c
-sim.srcs += $(SRC_ARCH)/peripherals/max1168_arch.c
-
-sim.CFLAGS += -DUSE_AMI601
-sim.srcs += peripherals/ami601.c
-sim.CFLAGS += -DUSE_I2C1
+$(error The imu_booz subsystem has been removed, please replace with e.g. or "b2_v1.0", "b2_v1.1", "b2_v1.2" as appropriate.)
diff --git a/conf/autopilot/subsystems/rotorcraft/imu_b2_v1.0.makefile b/conf/autopilot/subsystems/shared/imu_b2_common.makefile
similarity index 80%
rename from conf/autopilot/subsystems/rotorcraft/imu_b2_v1.0.makefile
rename to conf/autopilot/subsystems/shared/imu_b2_common.makefile
index 0e435f803d..84548578b4 100644
--- a/conf/autopilot/subsystems/rotorcraft/imu_b2_v1.0.makefile
+++ b/conf/autopilot/subsystems/shared/imu_b2_common.makefile
@@ -1,5 +1,6 @@
+# Hey Emacs, this is a -*- makefile -*-
#
-# Booz2 IMU booz2v1.0
+# Common part for all Booz2 IMUs
#
#
# required xml:
@@ -34,29 +35,28 @@
#
#
-# imu Booz2 v1
+# for fixedwing firmware
+imu_CFLAGS += -DUSE_IMU
imu_CFLAGS += -DIMU_TYPE_H=\"subsystems/imu/imu_b2.h\"
-imu_CFLAGS += -DIMU_B2_MAG_TYPE=IMU_B2_MAG_AMI601
-imu_CFLAGS += -DIMU_B2_VERSION_1_0
imu_srcs += $(SRC_SUBSYSTEMS)/imu.c
imu_srcs += $(SRC_SUBSYSTEMS)/imu/imu_b2.c
imu_srcs += $(SRC_ARCH)/subsystems/imu/imu_b2_arch.c
-imu_CFLAGS += -DSSP_VIC_SLOT=9
imu_srcs += peripherals/max1168.c
imu_srcs += $(SRC_ARCH)/peripherals/max1168_arch.c
+
+
+ifeq ($(ARCH), lpc21)
+imu_CFLAGS += -DSSP_VIC_SLOT=9
imu_CFLAGS += -DMAX1168_EOC_VIC_SLOT=8
+else ifeq ($(ARCH), stm32)
+#FIXME: untested
+imu_CFLAGS += -DUSE_SPI2 -DUSE_DMA1_C4_IRQ -DUSE_EXTI2_IRQ -DUSE_SPI2_IRQ
+imu_CFLAGS += -DMAX_1168_DRDY_PORT=$(MAX_1168_DRDY_PORT)
+imu_CFLAGS += -DMAX_1168_DRDY_PORT_SOURCE=$(MAX_1168_DRDY_PORT_SOURCE)
+endif
-imu_CFLAGS += -DUSE_AMI601
-imu_srcs += peripherals/ami601.c
-imu_CFLAGS += -DUSE_I2C1 -DI2C1_SCLL=150 -DI2C1_SCLH=150 -DI2C1_VIC_SLOT=12
-
-
-# Keep CFLAGS/Srcs for imu in separate expression so we can assign it to other targets
-# see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example
-ap.CFLAGS += $(imu_CFLAGS)
-ap.srcs += $(imu_srcs)
#
# Simulator
diff --git a/conf/autopilot/subsystems/shared/imu_b2_v1.0.makefile b/conf/autopilot/subsystems/shared/imu_b2_v1.0.makefile
new file mode 100644
index 0000000000..b3063437df
--- /dev/null
+++ b/conf/autopilot/subsystems/shared/imu_b2_v1.0.makefile
@@ -0,0 +1,60 @@
+# Hey Emacs, this is a -*- makefile -*-
+#
+# Booz2 IMU booz2v1.0
+#
+#
+# required xml:
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+
+
+# common Booz2 IMU files
+include $(CFG_SHARED)/imu_b2_common.makefile
+
+# imu Booz2 v1.1
+imu_CFLAGS += -DIMU_B2_MAG_TYPE=IMU_B2_MAG_AMI601
+imu_CFLAGS += -DIMU_B2_VERSION_1_0
+
+# Magnetometer
+imu_CFLAGS += -DUSE_AMI601
+imu_srcs += peripherals/ami601.c
+
+ifeq ($(ARCH), lpc21)
+imu_CFLAGS += -DUSE_I2C1 -DI2C1_SCLL=150 -DI2C1_SCLH=150 -DI2C1_VIC_SLOT=12
+else ifeq ($(ARCH), stm32)
+#FIXME: untested
+imu_CFLAGS += -DUSE_I2C2 -DUSE_EXTI9_5_IRQ
+endif
+
+# Keep CFLAGS/Srcs for imu in separate expression so we can assign it to other targets
+# see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example
+ap.CFLAGS += $(imu_CFLAGS)
+ap.srcs += $(imu_srcs)
diff --git a/conf/autopilot/subsystems/rotorcraft/imu_b2_v1.1.makefile b/conf/autopilot/subsystems/shared/imu_b2_v1.1.makefile
similarity index 63%
rename from conf/autopilot/subsystems/rotorcraft/imu_b2_v1.1.makefile
rename to conf/autopilot/subsystems/shared/imu_b2_v1.1.makefile
index afea1237dd..2e4fe5e444 100644
--- a/conf/autopilot/subsystems/rotorcraft/imu_b2_v1.1.makefile
+++ b/conf/autopilot/subsystems/shared/imu_b2_v1.1.makefile
@@ -1,3 +1,4 @@
+# Hey Emacs, this is a -*- makefile -*-
#
# Booz2 IMU booz2v1.1
#
@@ -38,51 +39,23 @@
# param: MAX_1168_DRDY_PORT
+# common Booz2 IMU files
+include $(CFG_SHARED)/imu_b2_common.makefile
# imu Booz2 v1.1
-
-imu_CFLAGS += -DIMU_TYPE_H=\"subsystems/imu/imu_b2.h\"
imu_CFLAGS += -DIMU_B2_MAG_TYPE=IMU_B2_MAG_MS2100
imu_CFLAGS += -DIMU_B2_VERSION_1_1
-imu_srcs += $(SRC_SUBSYSTEMS)/imu.c
-imu_srcs += $(SRC_SUBSYSTEMS)/imu/imu_b2.c
-imu_srcs += $(SRC_ARCH)/subsystems/imu/imu_b2_arch.c
-
-imu_srcs += peripherals/max1168.c
-imu_srcs += $(SRC_ARCH)/peripherals/max1168_arch.c
+# Magnetometer
imu_srcs += peripherals/ms2100.c
imu_srcs += $(SRC_ARCH)/peripherals/ms2100_arch.c
ifeq ($(ARCH), lpc21)
-imu_CFLAGS += -DSSP_VIC_SLOT=9
-imu_CFLAGS += -DMAX1168_EOC_VIC_SLOT=8
imu_CFLAGS += -DMS2100_DRDY_VIC_SLOT=12
else ifeq ($(ARCH), stm32)
-imu_CFLAGS += -DUSE_SPI2 -DUSE_DMA1_C4_IRQ -DUSE_EXTI2_IRQ -DUSE_SPI2_IRQ
-imu_CFLAGS += -DMAX_1168_DRDY_PORT=$(MAX_1168_DRDY_PORT)
-imu_CFLAGS += -DMAX_1168_DRDY_PORT_SOURCE=$(MAX_1168_DRDY_PORT_SOURCE)
endif
# Keep CFLAGS/Srcs for imu in separate expression so we can assign it to other targets
# see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example
ap.CFLAGS += $(imu_CFLAGS)
ap.srcs += $(imu_srcs)
-
-#
-# Simulator
-#
-
-sim.CFLAGS += -DIMU_TYPE_H=\"subsystems/imu/imu_b2.h\"
-sim.CFLAGS += -DIMU_B2_MAG_TYPE=IMU_B2_MAG_AMI601
-sim.CFLAGS += -DIMU_B2_VERSION_1_1
-sim.srcs += $(SRC_SUBSYSTEMS)/imu.c
-sim.srcs += $(SRC_SUBSYSTEMS)/imu/imu_b2.c
-sim.srcs += $(SRC_ARCH)/subsystems/imu/imu_b2_arch.c
-
-sim.srcs += peripherals/max1168.c
-sim.srcs += $(SRC_ARCH)/peripherals/max1168_arch.c
-
-sim.CFLAGS += -DUSE_AMI601
-sim.srcs += peripherals/ami601.c
-sim.CFLAGS += -DUSE_I2C1
diff --git a/conf/autopilot/subsystems/rotorcraft/imu_b2_v1.2.makefile b/conf/autopilot/subsystems/shared/imu_b2_v1.2.makefile
similarity index 61%
rename from conf/autopilot/subsystems/rotorcraft/imu_b2_v1.2.makefile
rename to conf/autopilot/subsystems/shared/imu_b2_v1.2.makefile
index 91ba3d16d4..e4775322c3 100644
--- a/conf/autopilot/subsystems/rotorcraft/imu_b2_v1.2.makefile
+++ b/conf/autopilot/subsystems/shared/imu_b2_v1.2.makefile
@@ -1,3 +1,4 @@
+# Hey Emacs, this is a -*- makefile -*-
#
# Booz2 IMU booz2v1.2
#
@@ -38,31 +39,21 @@
# param: MAX_1168_DRDY_PORT
+# common Booz2 IMU files
+include $(CFG_SHARED)/imu_b2_common.makefile
# imu Booz2 v1.2
-
-imu_CFLAGS += -DIMU_TYPE_H=\"subsystems/imu/imu_b2.h\"
imu_CFLAGS += -DIMU_B2_MAG_TYPE=IMU_B2_MAG_HMC5843
imu_CFLAGS += -DIMU_B2_VERSION_1_2
-imu_srcs += $(SRC_SUBSYSTEMS)/imu.c
-imu_srcs += $(SRC_SUBSYSTEMS)/imu/imu_b2.c
-imu_srcs += $(SRC_ARCH)/subsystems/imu/imu_b2_arch.c
-
-imu_srcs += peripherals/max1168.c
-imu_srcs += $(SRC_ARCH)/peripherals/max1168_arch.c
+# Magnetometer
imu_srcs += peripherals/hmc5843.c
imu_srcs += $(SRC_ARCH)/peripherals/hmc5843_arch.c
ifeq ($(ARCH), lpc21)
-imu_CFLAGS += -DSSP_VIC_SLOT=9
-imu_CFLAGS += -DMAX1168_EOC_VIC_SLOT=8
#FIXME ms2100 not used on this imu
-imu_CFLAGS += -DMS2100_DRDY_VIC_SLOT=12
+#imu_CFLAGS += -DMS2100_DRDY_VIC_SLOT=12
else ifeq ($(ARCH), stm32)
-imu_CFLAGS += -DUSE_SPI2 -DUSE_DMA1_C4_IRQ -DUSE_EXTI2_IRQ -DUSE_SPI2_IRQ
-imu_CFLAGS += -DMAX_1168_DRDY_PORT=$(MAX_1168_DRDY_PORT)
-imu_CFLAGS += -DMAX_1168_DRDY_PORT_SOURCE=$(MAX_1168_DRDY_PORT_SOURCE)
imu_CFLAGS += -DUSE_I2C2 -DUSE_EXTI9_5_IRQ
endif
@@ -70,23 +61,3 @@ endif
# see: conf/autopilot/subsystems/lisa_passthrough/imu_b2_v1.1.makefile for example
ap.CFLAGS += $(imu_CFLAGS)
ap.srcs += $(imu_srcs)
-
-#
-# Simulator
-#
-
-sim.CFLAGS += -DIMU_TYPE_H=\"subsystems/imu/imu_b2.h\"
-#FIXME, should be HMC5843
-sim.CFLAGS += -DIMU_B2_MAG_TYPE=IMU_B2_MAG_AMI601
-#FIXME, should be verision 1.2
-sim.CFLAGS += -DIMU_B2_VERSION_1_1
-sim.srcs += $(SRC_SUBSYSTEMS)/imu.c
-sim.srcs += $(SRC_SUBSYSTEMS)/imu/imu_b2.c
-sim.srcs += $(SRC_ARCH)/subsystems/imu/imu_b2_arch.c
-
-sim.srcs += peripherals/max1168.c
-sim.srcs += $(SRC_ARCH)/peripherals/max1168_arch.c
-
-sim.CFLAGS += -DUSE_AMI601
-sim.srcs += peripherals/ami601.c
-sim.CFLAGS += -DUSE_I2C1
diff --git a/conf/autopilot/subsystems/shared/imu_yai.makefile b/conf/autopilot/subsystems/shared/imu_yai.makefile
new file mode 100644
index 0000000000..6149c87795
--- /dev/null
+++ b/conf/autopilot/subsystems/shared/imu_yai.makefile
@@ -0,0 +1,50 @@
+# Hey Emacs, this is a -*- makefile -*-
+#
+# YAI IMU
+#
+#
+# required xml:
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+
+#
+# param: MAX_1168_DRDY_PORT
+
+# common Booz2 IMU files
+include $(CFG_SHARED)/imu_b2_common.makefile
+
+# imu YAI v1.0
+# no default channels and signs defined yet
+
+# No Magnetometer
+
+ap.srcs += $(imu_srcs)
+ap.CFLAGS += $(imu_CFLAGS)