diff --git a/mk/PX4/ROMFS/init.d/rc.APM b/mk/PX4/ROMFS/init.d/rc.APM
index 5f7923096f43dd95abc586bb6b2094ae300a53ae..646c6ef0099ee49cadeb0d52df982fa99e8f3962 100644
--- a/mk/PX4/ROMFS/init.d/rc.APM
+++ b/mk/PX4/ROMFS/init.d/rc.APM
@@ -358,6 +358,16 @@ else
     sh /etc/init.d/rc.error           
 fi
 
+if [ -f /bin/uavcan ]
+then
+    if uavcan start 1
+    then
+        echo "started uavcan OK"
+    else
+        echo "failed to start uavcan"
+    fi
+fi
+
 if [ $BOARD == FMUv2 ]
 then
   # the ramtron on FMUv2 is very fast and can handle trillions of
diff --git a/mk/PX4/config_px4fmu-v2_APM.mk b/mk/PX4/config_px4fmu-v2_APM.mk
index f285e0e4a71a895d498f0e0e8796cd97926b7ed2..57c17388e41ee06a74872d138e44c95eb3a93cf8 100644
--- a/mk/PX4/config_px4fmu-v2_APM.mk
+++ b/mk/PX4/config_px4fmu-v2_APM.mk
@@ -74,6 +74,12 @@ MODULES         += modules/libtomcrypt
 endif
 MODULES		+= lib/conversion
 
+ifneq ($(wildcard $(SKETCHBOOK)/../uavcan),)  
+MODULES         += modules/uavcan
+MODULES         += lib/mathlib
+LIBRARIES       += lib/mathlib/CMSIS
+endif
+
 #
 # Transitional support - add commands from the NuttX export archive.
 #
diff --git a/mk/px4_targets.mk b/mk/px4_targets.mk
index bb6c0053336ae7750a9bf21491cb6d63620dd0e1..abfd931533aca0176d673eebe3adf71efe2d7b86 100644
--- a/mk/px4_targets.mk
+++ b/mk/px4_targets.mk
@@ -12,6 +12,10 @@ ifeq ($(wildcard $(PX4_ROOT)/nuttx-configs),)
 $(error ERROR: PX4_ROOT not set correctly - no nuttx-configs directory found)
 endif
 
+ifneq ($(wildcard $(SKETCHBOOK)/../uavcan),)
+UAVCAN_DIR=$(shell cd $(SKETCHBOOK)/../uavcan && pwd)/
+endif
+
 # default to PX4NuttX above the PX4Firmware tree
 ifeq ($(NUTTX_SRC),)
 NUTTX_SRC := $(shell cd $(PX4_ROOT)/../PX4NuttX/nuttx && pwd)/
@@ -31,6 +35,9 @@ PX4_GIT_VERSION   := $(shell cd $(PX4_ROOT) && git rev-parse HEAD | cut -c1-8)
 
 EXTRAFLAGS += -DNUTTX_GIT_VERSION="\"$(NUTTX_GIT_VERSION)\""
 EXTRAFLAGS += -DPX4_GIT_VERSION="\"$(PX4_GIT_VERSION)\""
+ifneq ($(wildcard $(SKETCHBOOK)/../uavcan),)
+EXTRAFLAGS += -DUAVCAN=1
+endif
 
 # we have different config files for V1 and V2
 PX4_V1_CONFIG_FILE=$(MK_DIR)/PX4/config_px4fmu-v1_APM.mk
@@ -43,7 +50,7 @@ WARNFLAGS = -Wno-psabi -Wno-packed -Wno-error=double-promotion -Wno-error=unused
 # avoid PX4 submodules
 export GIT_SUBMODULES_ARE_EVIL = 1
 
-PX4_MAKE = $(v) GIT_SUBMODULES_ARE_EVIL=1 make -C $(SKETCHBOOK) -f $(PX4_ROOT)/Makefile EXTRADEFINES="$(SKETCHFLAGS) $(WARNFLAGS) "'$(EXTRAFLAGS)' APM_MODULE_DIR=$(SKETCHBOOK) SKETCHBOOK=$(SKETCHBOOK) PX4_ROOT=$(PX4_ROOT) NUTTX_SRC=$(NUTTX_SRC) MAXOPTIMIZATION="-Os" 
+PX4_MAKE = $(v) GIT_SUBMODULES_ARE_EVIL=1 make -C $(SKETCHBOOK) -f $(PX4_ROOT)/Makefile EXTRADEFINES="$(SKETCHFLAGS) $(WARNFLAGS) "'$(EXTRAFLAGS)' APM_MODULE_DIR=$(SKETCHBOOK) SKETCHBOOK=$(SKETCHBOOK) PX4_ROOT=$(PX4_ROOT) NUTTX_SRC=$(NUTTX_SRC) MAXOPTIMIZATION="-Os" UAVCAN_DIR=$(UAVCAN_DIR)
 PX4_MAKE_ARCHIVES = make -C $(PX4_ROOT) NUTTX_SRC=$(NUTTX_SRC) archives MAXOPTIMIZATION="-Os" 
 
 .PHONY: module_mk