diff --git a/.gitmodules b/.gitmodules
index 112c186ef562f70df8fa62e9753adea49ac7545f..630eac1ccd9f3ce382aed2f0c53a3da9ee09a377 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,8 +2,8 @@
 	path = mavlink/include/mavlink/v2.0
 	url = https://github.com/mavlink/c_library_v2.git
 	branch = master
-[submodule "src/modules/uavcan/libuavcan"]
-	path = src/modules/uavcan/libuavcan
+[submodule "src/drivers/uavcan/libuavcan"]
+	path = src/drivers/uavcan/libuavcan
 	url = https://github.com/UAVCAN/libuavcan.git
 	branch = master
 [submodule "msg/tools/genmsg"]
diff --git a/Tools/astyle/files_to_check_code_style.sh b/Tools/astyle/files_to_check_code_style.sh
index 63cc5508cd016b30159c800456774e85eb5c3a1f..2bfee94f3bbfa003270fc3686d483d96bd43e676 100755
--- a/Tools/astyle/files_to_check_code_style.sh
+++ b/Tools/astyle/files_to_check_code_style.sh
@@ -15,5 +15,5 @@ exec find boards src platforms \
     -path src/lib/matrix -prune -o \
     -path src/modules/micrortps_bridge/micro-CDR -prune -o \
     -path src/modules/systemlib/uthash -prune -o \
-    -path src/modules/uavcan/libuavcan -prune -o \
+    -path src/drivers/uavcan/libuavcan -prune -o \
     -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) | grep $PATTERN
diff --git a/boards/aerotenna/ocpoc/ubuntu.cmake b/boards/aerotenna/ocpoc/ubuntu.cmake
index 184ef642ce98f571a9f7b64bd979ecdb7e46e607..66d39ece2c73b2c13d01547bb050f007bad1a40d 100644
--- a/boards/aerotenna/ocpoc/ubuntu.cmake
+++ b/boards/aerotenna/ocpoc/ubuntu.cmake
@@ -51,7 +51,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/airmind/mindpx-v2/default.cmake b/boards/airmind/mindpx-v2/default.cmake
index 113cc8b8dffbdbbaffe76fc2bfe4aeb702066387..a783b77fd504783ab2d5f8d9fac0ff59be8ba645 100644
--- a/boards/airmind/mindpx-v2/default.cmake
+++ b/boards/airmind/mindpx-v2/default.cmake
@@ -45,6 +45,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -68,7 +69,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/atlflight/eagle/default.cmake b/boards/atlflight/eagle/default.cmake
index 31e47d48d8f09aa37718b768a2bc31132e8d6bd2..3fff2b1602807989c6f22fa6716b90c3cf773052 100644
--- a/boards/atlflight/eagle/default.cmake
+++ b/boards/atlflight/eagle/default.cmake
@@ -86,7 +86,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/atlflight/excelsior/default.cmake b/boards/atlflight/excelsior/default.cmake
index 14d53fa211e96f8620132d8298bc530d6862d505..5304fd6d5ddd292a8ef80c113e2d55e087118839 100644
--- a/boards/atlflight/excelsior/default.cmake
+++ b/boards/atlflight/excelsior/default.cmake
@@ -86,7 +86,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/atmel/same70xplained/default.cmake b/boards/atmel/same70xplained/default.cmake
index b877f500081de1c85dd14a61db7ef699fdabc036..7f69ce4e3d2397cc15f9916e2929220d2f04a07b 100644
--- a/boards/atmel/same70xplained/default.cmake
+++ b/boards/atmel/same70xplained/default.cmake
@@ -69,7 +69,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#WIP uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/auav/esc35-v1/default.cmake b/boards/auav/esc35-v1/default.cmake
index 41957e10f46fe20cd400ebd2ce4e9fc7f9687e54..574c4c5639eae2ef97bea54aa0618b636cb94820 100644
--- a/boards/auav/esc35-v1/default.cmake
+++ b/boards/auav/esc35-v1/default.cmake
@@ -46,15 +46,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		uavcanesc
 
 	MODULES
-		uavcanesc
-		uavcanesc/nshterm
-		uavcanesc/commands/cfg
-		uavcanesc/commands/selftest
-		uavcanesc/commands/dc
-		uavcanesc/commands/rpm
-		uavcanesc/commands/stat
 
 	SYSTEMCMDS
 		config
diff --git a/boards/auav/x21/default.cmake b/boards/auav/x21/default.cmake
index 32dd67b904845a3de493e1a50c710d4299b28cec..6b55c0817d78956ecadb0c64fa7f95f0b8754bff 100644
--- a/boards/auav/x21/default.cmake
+++ b/boards/auav/x21/default.cmake
@@ -50,6 +50,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -73,7 +74,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/av/x-v1/default.cmake b/boards/av/x-v1/default.cmake
index 165f72076db6745a9fac0556db06ee0cc345ec7d..9b4cd73f73d953e348e27515594d7039119ee2b7 100644
--- a/boards/av/x-v1/default.cmake
+++ b/boards/av/x-v1/default.cmake
@@ -50,6 +50,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -73,7 +74,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/beaglebone/blue/cross.cmake b/boards/beaglebone/blue/cross.cmake
index f8ea400fa788c4fef7da43e2fd10d5a91dfbc570..b4d6c4f1c973733c044968230e2fb5c26d130a9a 100644
--- a/boards/beaglebone/blue/cross.cmake
+++ b/boards/beaglebone/blue/cross.cmake
@@ -49,7 +49,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/beaglebone/blue/native.cmake b/boards/beaglebone/blue/native.cmake
index 9a4d9da7007aca3ed89209177948f31c5739c76a..41bc1e92c25ec9632ac4ba9dcc42567c28861b3f 100644
--- a/boards/beaglebone/blue/native.cmake
+++ b/boards/beaglebone/blue/native.cmake
@@ -47,7 +47,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/bitcraze/crazyflie/default.cmake b/boards/bitcraze/crazyflie/default.cmake
index 6e6cee059e4fa99ad4cc073658475133c7e5b263..e9cebfcf8e58199fb1858b18bfcf4aaa68959610 100644
--- a/boards/bitcraze/crazyflie/default.cmake
+++ b/boards/bitcraze/crazyflie/default.cmake
@@ -38,7 +38,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		#vtol_att_control
 		wind_estimator
 
diff --git a/boards/emlid/navio2/cross.cmake b/boards/emlid/navio2/cross.cmake
index e12445f6c29f93d6502a970f3327ca75f88d0606..f3a5044acb3c598016f850b42e5aab707bb0fbd9 100644
--- a/boards/emlid/navio2/cross.cmake
+++ b/boards/emlid/navio2/cross.cmake
@@ -54,7 +54,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/emlid/navio2/native.cmake b/boards/emlid/navio2/native.cmake
index 0d3698048018454f4780c1da48d082f3cb8cdb26..b5a4a7034bfcf40886e90643b2e612cbe02e63af 100644
--- a/boards/emlid/navio2/native.cmake
+++ b/boards/emlid/navio2/native.cmake
@@ -52,7 +52,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/gumstix/aerocore2/default.cmake b/boards/gumstix/aerocore2/default.cmake
index 4fe66193f70ae8bcde0beeae9663a2fb711e5678..bef94d9d544271e314538ed3b874ee00e2ae1286 100644
--- a/boards/gumstix/aerocore2/default.cmake
+++ b/boards/gumstix/aerocore2/default.cmake
@@ -48,7 +48,6 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
-		#vmount
 
 	MODULES
 		#attitude_estimator_q
@@ -72,7 +71,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/intel/aerofc-v1/default.cmake b/boards/intel/aerofc-v1/default.cmake
index ba006e3f5eb6ed9f0711f846bef3ddad5953dcc6..88b176b28fc168f08fa5b85a2b9cab164d52233d 100644
--- a/boards/intel/aerofc-v1/default.cmake
+++ b/boards/intel/aerofc-v1/default.cmake
@@ -30,7 +30,7 @@ px4_add_board(
 		stm32
 		tap_esc
 		#telemetry # all available telemetry drivers
-		#vmount
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -54,7 +54,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/intel/aerofc-v1/rtps.cmake b/boards/intel/aerofc-v1/rtps.cmake
index d36941744a442e7f194482bc28b3f4b82ec2ccb5..474563aa47a8727b4af19dc7af6347310ddfb079 100644
--- a/boards/intel/aerofc-v1/rtps.cmake
+++ b/boards/intel/aerofc-v1/rtps.cmake
@@ -32,7 +32,7 @@ px4_add_board(
 		stm32
 		tap_esc
 		#telemetry # all available telemetry drivers
-		#vmount
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -57,7 +57,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/nxp/fmuk66-v3/default.cmake b/boards/nxp/fmuk66-v3/default.cmake
index 3595893461f2dfe843a44cd34438cafbc1ab5e41..5ed0eb407d71a7beb5dae0a7b02cfb0ec39f9960 100644
--- a/boards/nxp/fmuk66-v3/default.cmake
+++ b/boards/nxp/fmuk66-v3/default.cmake
@@ -70,7 +70,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/omnibus/f4sd/default.cmake b/boards/omnibus/f4sd/default.cmake
index 7903f82155e8c197a3afbbc04f1e25eb7fe19ca4..a5f9703a167f4e042a8ad84cdb358d64e06c8bb9 100644
--- a/boards/omnibus/f4sd/default.cmake
+++ b/boards/omnibus/f4sd/default.cmake
@@ -42,7 +42,6 @@ px4_add_board(
 		#telemetry # all available telemetry drivers
 		telemetry/frsky_telemetry
 		#test_ppm
-		#vmount
 
 	MODULES
 		attitude_estimator_q
@@ -66,7 +65,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		#vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/px4/cannode-v1/default.cmake b/boards/px4/cannode-v1/default.cmake
index 30916f2bdb5f0d1fec939e19b42cf7ed340eb08a..4a08ac97b9b8b807de59d17b726df7be9e2680d0 100644
--- a/boards/px4/cannode-v1/default.cmake
+++ b/boards/px4/cannode-v1/default.cmake
@@ -44,9 +44,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		uavcannode
 
 	MODULES
-		uavcannode
 
 	SYSTEMCMDS
 		config
diff --git a/boards/px4/esc-v1/default.cmake b/boards/px4/esc-v1/default.cmake
index f53acab5b90f002f7b0b7909a61cad1be6bde0bb..a466be1648c3bb6ad6aed6a383e6cd87893fb577 100644
--- a/boards/px4/esc-v1/default.cmake
+++ b/boards/px4/esc-v1/default.cmake
@@ -46,15 +46,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		uavcanesc
 
 	MODULES
-		uavcanesc
-		uavcanesc/nshterm
-		uavcanesc/commands/cfg
-		uavcanesc/commands/selftest
-		uavcanesc/commands/dc
-		uavcanesc/commands/rpm
-		uavcanesc/commands/stat
 
 	SYSTEMCMDS
 		config
diff --git a/boards/px4/fmu-v2/default.cmake b/boards/px4/fmu-v2/default.cmake
index 8ddbdc1d078589b728c884e90c16ebc68208d601..5560f41d6feb04166709525fa61dca0e6d7bf8ce 100644
--- a/boards/px4/fmu-v2/default.cmake
+++ b/boards/px4/fmu-v2/default.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
+		#uavcan
 
 	MODULES
 		#attitude_estimator_q
@@ -80,7 +81,6 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		#wind_estimator
diff --git a/boards/px4/fmu-v2/lpe.cmake b/boards/px4/fmu-v2/lpe.cmake
index 0321172135418f8032aafe021c4217526468f8d0..b73a9e1c2141997ce49c9ddd458f14c7d26f6d82 100644
--- a/boards/px4/fmu-v2/lpe.cmake
+++ b/boards/px4/fmu-v2/lpe.cmake
@@ -55,6 +55,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -78,7 +79,7 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
+		vmount
 		#vtol_att_control
 		#wind_estimator
 
diff --git a/boards/px4/fmu-v2/test.cmake b/boards/px4/fmu-v2/test.cmake
index ea61214ca34c70cf45ce4e9066947f9c77d1e35a..0a33abc9bde15e800955726ad80f8a69cb08c725 100644
--- a/boards/px4/fmu-v2/test.cmake
+++ b/boards/px4/fmu-v2/test.cmake
@@ -56,6 +56,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
+		#uavcan
 
 	MODULES
 		#attitude_estimator_q
@@ -79,7 +80,6 @@ px4_add_board(
 		navigator
 		#position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		#wind_estimator
diff --git a/boards/px4/fmu-v3/default.cmake b/boards/px4/fmu-v3/default.cmake
index 5290f490e21e65062d086d234ff512ec0813dc94..7385ff69a5a0475aed77a66193ec25b02c3980b4 100644
--- a/boards/px4/fmu-v3/default.cmake
+++ b/boards/px4/fmu-v3/default.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v3/rtps.cmake b/boards/px4/fmu-v3/rtps.cmake
index 97a24d0ff288f6b3aeb3d26218631eac0b7503f3..c978c54eecec1dea31373659056e004426f93f69 100644
--- a/boards/px4/fmu-v3/rtps.cmake
+++ b/boards/px4/fmu-v3/rtps.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -82,7 +83,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v3/stackcheck.cmake b/boards/px4/fmu-v3/stackcheck.cmake
index b57ef1cfaa942362be3529e1729e2b4dda5abb3c..4e4ab3f5d719679042892f38cfd3bd37a4917a03 100644
--- a/boards/px4/fmu-v3/stackcheck.cmake
+++ b/boards/px4/fmu-v3/stackcheck.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4/default.cmake b/boards/px4/fmu-v4/default.cmake
index 23fd3375a61c5b6705eade55e74691db10529431..b32ec85d44252eaeeaa6946ae02fea6c8e7c648b 100644
--- a/boards/px4/fmu-v4/default.cmake
+++ b/boards/px4/fmu-v4/default.cmake
@@ -43,6 +43,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -66,7 +67,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4/rtps.cmake b/boards/px4/fmu-v4/rtps.cmake
index e2d4617b6551224a6fafd0c532a3794ca249646c..da809d172144555df9e52ae18af9c02815e6e912 100644
--- a/boards/px4/fmu-v4/rtps.cmake
+++ b/boards/px4/fmu-v4/rtps.cmake
@@ -44,6 +44,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -68,7 +69,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4/stackcheck.cmake b/boards/px4/fmu-v4/stackcheck.cmake
index 9d6fca3858c2bde515805ce90892444988bd0652..7016685457dbfeec5a54ef7301cad1b4f43236fe 100644
--- a/boards/px4/fmu-v4/stackcheck.cmake
+++ b/boards/px4/fmu-v4/stackcheck.cmake
@@ -43,6 +43,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -66,7 +67,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4pro/default.cmake b/boards/px4/fmu-v4pro/default.cmake
index c407732ab7129bb520ae4dd6720e934a3a3449b4..7ac4b421fa976596ec337059e16d145165dfc35f 100644
--- a/boards/px4/fmu-v4pro/default.cmake
+++ b/boards/px4/fmu-v4pro/default.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -80,7 +81,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v4pro/rtps.cmake b/boards/px4/fmu-v4pro/rtps.cmake
index 63426c46dd61e0031370e835ad6eab92a22578f0..f8e2d4643de209b59109ec1ec89b2029373854ea 100644
--- a/boards/px4/fmu-v4pro/rtps.cmake
+++ b/boards/px4/fmu-v4pro/rtps.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v5/default.cmake b/boards/px4/fmu-v5/default.cmake
index 008f36f9369f1bc118504b640d5d86cd24c8cafb..9a4e8f3e6a9d22d11e289058db636bcf3cff6ec9 100644
--- a/boards/px4/fmu-v5/default.cmake
+++ b/boards/px4/fmu-v5/default.cmake
@@ -57,6 +57,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -80,7 +81,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v5/rtps.cmake b/boards/px4/fmu-v5/rtps.cmake
index 3a052907c7d4140c6de76bfe08b07c74850dc395..e62b24f225b4acbfac33b2259f44390919212323 100644
--- a/boards/px4/fmu-v5/rtps.cmake
+++ b/boards/px4/fmu-v5/rtps.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -82,7 +83,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/fmu-v5/stackcheck.cmake b/boards/px4/fmu-v5/stackcheck.cmake
index 25e4a05891008206db1225a6e6c1851533d8ca07..c2de53a0fc8aa3147b09b0e67614f927e30a2396 100644
--- a/boards/px4/fmu-v5/stackcheck.cmake
+++ b/boards/px4/fmu-v5/stackcheck.cmake
@@ -58,6 +58,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -81,7 +82,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/raspberrypi/cross.cmake b/boards/px4/raspberrypi/cross.cmake
index fe119e6f6da4429f4c4b01d124c2c0399322e7c2..4627b829b44f527e17328ff30313bfe426af9653 100644
--- a/boards/px4/raspberrypi/cross.cmake
+++ b/boards/px4/raspberrypi/cross.cmake
@@ -46,7 +46,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/raspberrypi/native.cmake b/boards/px4/raspberrypi/native.cmake
index 761718d4ba23e63366633f8d5073685f4e04d117..d3cc473f95af5ace565022ca0164ae6bc48a787f 100644
--- a/boards/px4/raspberrypi/native.cmake
+++ b/boards/px4/raspberrypi/native.cmake
@@ -45,7 +45,6 @@ px4_add_board(
 		position_estimator_inav
 		sensors
 		#simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/sitl/default.cmake b/boards/px4/sitl/default.cmake
index 1f4eebe4f7d6dae1d0341150ec8c951875ea8bb8..923e61983cf9c45ae2ec622811830f64f3b7f326 100644
--- a/boards/px4/sitl/default.cmake
+++ b/boards/px4/sitl/default.cmake
@@ -18,6 +18,7 @@ px4_add_board(
 		pwm_out_sim
 		#telemetry # all available telemetry drivers
 		tone_alarm_sim
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -43,7 +44,6 @@ px4_add_board(
 		replay
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/sitl/rtps.cmake b/boards/px4/sitl/rtps.cmake
index c072e18d996edc002429b4a23bab12026871aec9..191d4fe9af3859488dc11390d120fc7f1c472bf9 100644
--- a/boards/px4/sitl/rtps.cmake
+++ b/boards/px4/sitl/rtps.cmake
@@ -18,6 +18,7 @@ px4_add_board(
 		#protocol_splitter
 		pwm_out_sim
 		#telemetry # all available telemetry drivers
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -44,7 +45,6 @@ px4_add_board(
 		replay
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/px4/sitl/test.cmake b/boards/px4/sitl/test.cmake
index 6821304ea50311baded853dd346db0aa50e0a7ad..06e489326dcdec2f64db364f2bead14ca62d69e2 100644
--- a/boards/px4/sitl/test.cmake
+++ b/boards/px4/sitl/test.cmake
@@ -17,6 +17,7 @@ px4_add_board(
 		#magnetometer # all available magnetometer drivers
 		pwm_out_sim
 		#telemetry # all available telemetry drivers
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -42,7 +43,6 @@ px4_add_board(
 		replay
 		sensors
 		simulator
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/stm/32f4discovery/default.cmake b/boards/stm/32f4discovery/default.cmake
index 8322aad8aef66de82be5c55bc4da60d4fad3d42d..46c950680c8d7fa96cb4d0792e4ffd0ffa8a15f0 100644
--- a/boards/stm/32f4discovery/default.cmake
+++ b/boards/stm/32f4discovery/default.cmake
@@ -35,7 +35,7 @@ px4_add_board(
 		#tap_esc
 		#telemetry # all available telemetry drivers
 		#test_ppm
-		#vmount
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -59,7 +59,7 @@ px4_add_board(
 		#navigator
 		position_estimator_inav
 		#sensors
-		#uavcan
+		#vmount
 		#vtol_att_control
 		wind_estimator
 
diff --git a/boards/stm/nucleo-F767ZI/default.cmake b/boards/stm/nucleo-F767ZI/default.cmake
index cf55c3e5fbb5a386c5a2ef37e8cf80aa20b89bc1..931a859739b23274f1d507766784ed8c10fa11d7 100644
--- a/boards/stm/nucleo-F767ZI/default.cmake
+++ b/boards/stm/nucleo-F767ZI/default.cmake
@@ -44,6 +44,7 @@ px4_add_board(
 		tap_esc
 		telemetry # all available telemetry drivers
 		test_ppm
+		#uavcan
 
 	MODULES
 		attitude_estimator_q
@@ -67,7 +68,6 @@ px4_add_board(
 		navigator
 		position_estimator_inav
 		sensors
-		#uavcan
 		vmount
 		vtol_att_control
 		wind_estimator
diff --git a/boards/thiemar/s2740vc-v1/default.cmake b/boards/thiemar/s2740vc-v1/default.cmake
index 98e132f653124bc5278c12ba19ccd36a602eb287..045206334a64f7a908c99865ca128022810e1397 100644
--- a/boards/thiemar/s2740vc-v1/default.cmake
+++ b/boards/thiemar/s2740vc-v1/default.cmake
@@ -37,9 +37,9 @@ px4_add_board(
 	DRIVERS
 		bootloaders
 		stm32
+		#uavcannode
 
 	MODULES
-		#uavcannode
 
 	SYSTEMCMDS
 		config
diff --git a/src/modules/uavcan/.gitignore b/src/drivers/uavcan/.gitignore
similarity index 100%
rename from src/modules/uavcan/.gitignore
rename to src/drivers/uavcan/.gitignore
diff --git a/src/modules/uavcan/CMakeLists.txt b/src/drivers/uavcan/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcan/CMakeLists.txt
rename to src/drivers/uavcan/CMakeLists.txt
diff --git a/src/modules/uavcan/actuators/esc.cpp b/src/drivers/uavcan/actuators/esc.cpp
similarity index 100%
rename from src/modules/uavcan/actuators/esc.cpp
rename to src/drivers/uavcan/actuators/esc.cpp
diff --git a/src/modules/uavcan/actuators/esc.hpp b/src/drivers/uavcan/actuators/esc.hpp
similarity index 100%
rename from src/modules/uavcan/actuators/esc.hpp
rename to src/drivers/uavcan/actuators/esc.hpp
diff --git a/src/modules/uavcan/actuators/hardpoint.cpp b/src/drivers/uavcan/actuators/hardpoint.cpp
similarity index 100%
rename from src/modules/uavcan/actuators/hardpoint.cpp
rename to src/drivers/uavcan/actuators/hardpoint.cpp
diff --git a/src/modules/uavcan/actuators/hardpoint.hpp b/src/drivers/uavcan/actuators/hardpoint.hpp
similarity index 100%
rename from src/modules/uavcan/actuators/hardpoint.hpp
rename to src/drivers/uavcan/actuators/hardpoint.hpp
diff --git a/src/modules/uavcan/allocator.hpp b/src/drivers/uavcan/allocator.hpp
similarity index 100%
rename from src/modules/uavcan/allocator.hpp
rename to src/drivers/uavcan/allocator.hpp
diff --git a/src/modules/uavcan/libuavcan b/src/drivers/uavcan/libuavcan
similarity index 100%
rename from src/modules/uavcan/libuavcan
rename to src/drivers/uavcan/libuavcan
diff --git a/src/modules/uavcan/sensors/baro.cpp b/src/drivers/uavcan/sensors/baro.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/baro.cpp
rename to src/drivers/uavcan/sensors/baro.cpp
diff --git a/src/modules/uavcan/sensors/baro.hpp b/src/drivers/uavcan/sensors/baro.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/baro.hpp
rename to src/drivers/uavcan/sensors/baro.hpp
diff --git a/src/modules/uavcan/sensors/gnss.cpp b/src/drivers/uavcan/sensors/gnss.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/gnss.cpp
rename to src/drivers/uavcan/sensors/gnss.cpp
diff --git a/src/modules/uavcan/sensors/gnss.hpp b/src/drivers/uavcan/sensors/gnss.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/gnss.hpp
rename to src/drivers/uavcan/sensors/gnss.hpp
diff --git a/src/modules/uavcan/sensors/mag.cpp b/src/drivers/uavcan/sensors/mag.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/mag.cpp
rename to src/drivers/uavcan/sensors/mag.cpp
diff --git a/src/modules/uavcan/sensors/mag.hpp b/src/drivers/uavcan/sensors/mag.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/mag.hpp
rename to src/drivers/uavcan/sensors/mag.hpp
diff --git a/src/modules/uavcan/sensors/sensor_bridge.cpp b/src/drivers/uavcan/sensors/sensor_bridge.cpp
similarity index 100%
rename from src/modules/uavcan/sensors/sensor_bridge.cpp
rename to src/drivers/uavcan/sensors/sensor_bridge.cpp
diff --git a/src/modules/uavcan/sensors/sensor_bridge.hpp b/src/drivers/uavcan/sensors/sensor_bridge.hpp
similarity index 100%
rename from src/modules/uavcan/sensors/sensor_bridge.hpp
rename to src/drivers/uavcan/sensors/sensor_bridge.hpp
diff --git a/src/modules/uavcan/uavcan_driver.hpp b/src/drivers/uavcan/uavcan_driver.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_driver.hpp
rename to src/drivers/uavcan/uavcan_driver.hpp
diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/drivers/uavcan/uavcan_main.cpp
similarity index 100%
rename from src/modules/uavcan/uavcan_main.cpp
rename to src/drivers/uavcan/uavcan_main.cpp
diff --git a/src/modules/uavcan/uavcan_main.hpp b/src/drivers/uavcan/uavcan_main.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_main.hpp
rename to src/drivers/uavcan/uavcan_main.hpp
diff --git a/src/modules/uavcan/uavcan_module.hpp b/src/drivers/uavcan/uavcan_module.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_module.hpp
rename to src/drivers/uavcan/uavcan_module.hpp
diff --git a/src/modules/uavcan/uavcan_params.c b/src/drivers/uavcan/uavcan_params.c
similarity index 100%
rename from src/modules/uavcan/uavcan_params.c
rename to src/drivers/uavcan/uavcan_params.c
diff --git a/src/modules/uavcan/uavcan_servers.cpp b/src/drivers/uavcan/uavcan_servers.cpp
similarity index 100%
rename from src/modules/uavcan/uavcan_servers.cpp
rename to src/drivers/uavcan/uavcan_servers.cpp
diff --git a/src/modules/uavcan/uavcan_servers.hpp b/src/drivers/uavcan/uavcan_servers.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_servers.hpp
rename to src/drivers/uavcan/uavcan_servers.hpp
diff --git a/src/modules/uavcan/uavcan_virtual_can_driver.hpp b/src/drivers/uavcan/uavcan_virtual_can_driver.hpp
similarity index 100%
rename from src/modules/uavcan/uavcan_virtual_can_driver.hpp
rename to src/drivers/uavcan/uavcan_virtual_can_driver.hpp
diff --git a/src/modules/uavcanesc/.gitignore b/src/drivers/uavcanesc/.gitignore
similarity index 100%
rename from src/modules/uavcanesc/.gitignore
rename to src/drivers/uavcanesc/.gitignore
diff --git a/src/modules/uavcanesc/CMakeLists.txt b/src/drivers/uavcanesc/CMakeLists.txt
similarity index 94%
rename from src/modules/uavcanesc/CMakeLists.txt
rename to src/drivers/uavcanesc/CMakeLists.txt
index 7154b31e7d0ac6d964e700afea39dd1039249459..906f214af3102618a271dcae9edb71b0383ebc13 100644
--- a/src/modules/uavcanesc/CMakeLists.txt
+++ b/src/drivers/uavcanesc/CMakeLists.txt
@@ -31,7 +31,9 @@
 #
 ############################################################################
 
-px4_add_git_submodule(TARGET git_uavcan PATH "../uavcan/libuavcan")
+set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/drivers/uavcan/libuavcan)
+
+px4_add_git_submodule(TARGET git_uavcan PATH ${LIBUAVCAN_DIR})
 
 set(UAVCAN_USE_CPP03 ON CACHE BOOL "uavcan cpp03")
 set(UAVCAN_PLATFORM stm32 CACHE STRING "uavcan platform")
@@ -50,8 +52,6 @@ add_definitions(
 		-DUAVCAN_USE_EXTERNAL_SNPRINT
 		)
 
-set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/modules/uavcan/libuavcan)
-
 add_subdirectory(${LIBUAVCAN_DIR} uavcanesc_libuavcan)
 add_dependencies(uavcan prebuild_targets)
 
@@ -63,7 +63,6 @@ include_directories(${LIBUAVCAN_DIR}/libuavcan_drivers/stm32/driver/include)
 
 include_directories(${PX4_SOURCE_DIR}/src/drivers/bootloaders)
 
-
 px4_add_module(
 	MODULE modules__uavcanesc
 	MAIN uavcanesc
@@ -86,3 +85,6 @@ px4_add_module(
 		uavcan
 		uavcan_stm32_driver
 	)
+
+add_subdirectory(commands)
+add_subdirectory(nshterm)
diff --git a/src/drivers/uavcanesc/commands/CMakeLists.txt b/src/drivers/uavcanesc/commands/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b3fe8e80a4feb40f526dd139130ec10bf4c32900
--- /dev/null
+++ b/src/drivers/uavcanesc/commands/CMakeLists.txt
@@ -0,0 +1,38 @@
+############################################################################
+#
+#   Copyright (c) 2018 PX4 Development Team. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 3. Neither the name PX4 nor the names of its contributors may be
+#    used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+
+add_subdirectory(cfg)
+add_subdirectory(dc)
+add_subdirectory(rpm)
+add_subdirectory(selftest)
+add_subdirectory(stat)
diff --git a/src/modules/uavcanesc/commands/cfg/CMakeLists.txt b/src/drivers/uavcanesc/commands/cfg/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/cfg/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/cfg/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/cfg/esc_cfg.cpp b/src/drivers/uavcanesc/commands/cfg/esc_cfg.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/cfg/esc_cfg.cpp
rename to src/drivers/uavcanesc/commands/cfg/esc_cfg.cpp
diff --git a/src/modules/uavcanesc/commands/cfg/esc_cfg.hpp b/src/drivers/uavcanesc/commands/cfg/esc_cfg.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/cfg/esc_cfg.hpp
rename to src/drivers/uavcanesc/commands/cfg/esc_cfg.hpp
diff --git a/src/modules/uavcanesc/commands/dc/CMakeLists.txt b/src/drivers/uavcanesc/commands/dc/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/dc/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/dc/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/dc/esc_dc.cpp b/src/drivers/uavcanesc/commands/dc/esc_dc.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/dc/esc_dc.cpp
rename to src/drivers/uavcanesc/commands/dc/esc_dc.cpp
diff --git a/src/modules/uavcanesc/commands/dc/esc_dc.hpp b/src/drivers/uavcanesc/commands/dc/esc_dc.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/dc/esc_dc.hpp
rename to src/drivers/uavcanesc/commands/dc/esc_dc.hpp
diff --git a/src/modules/uavcanesc/commands/rpm/CMakeLists.txt b/src/drivers/uavcanesc/commands/rpm/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/rpm/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/rpm/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/rpm/esc_rpm.cpp b/src/drivers/uavcanesc/commands/rpm/esc_rpm.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/rpm/esc_rpm.cpp
rename to src/drivers/uavcanesc/commands/rpm/esc_rpm.cpp
diff --git a/src/modules/uavcanesc/commands/rpm/esc_rpm.hpp b/src/drivers/uavcanesc/commands/rpm/esc_rpm.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/rpm/esc_rpm.hpp
rename to src/drivers/uavcanesc/commands/rpm/esc_rpm.hpp
diff --git a/src/modules/uavcanesc/commands/selftest/CMakeLists.txt b/src/drivers/uavcanesc/commands/selftest/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/selftest/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/selftest/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/selftest/esc_selftest.cpp b/src/drivers/uavcanesc/commands/selftest/esc_selftest.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/selftest/esc_selftest.cpp
rename to src/drivers/uavcanesc/commands/selftest/esc_selftest.cpp
diff --git a/src/modules/uavcanesc/commands/selftest/esc_selftest.hpp b/src/drivers/uavcanesc/commands/selftest/esc_selftest.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/selftest/esc_selftest.hpp
rename to src/drivers/uavcanesc/commands/selftest/esc_selftest.hpp
diff --git a/src/modules/uavcanesc/commands/stat/CMakeLists.txt b/src/drivers/uavcanesc/commands/stat/CMakeLists.txt
similarity index 100%
rename from src/modules/uavcanesc/commands/stat/CMakeLists.txt
rename to src/drivers/uavcanesc/commands/stat/CMakeLists.txt
diff --git a/src/modules/uavcanesc/commands/stat/esc_stat.cpp b/src/drivers/uavcanesc/commands/stat/esc_stat.cpp
similarity index 100%
rename from src/modules/uavcanesc/commands/stat/esc_stat.cpp
rename to src/drivers/uavcanesc/commands/stat/esc_stat.cpp
diff --git a/src/modules/uavcanesc/commands/stat/esc_stat.hpp b/src/drivers/uavcanesc/commands/stat/esc_stat.hpp
similarity index 100%
rename from src/modules/uavcanesc/commands/stat/esc_stat.hpp
rename to src/drivers/uavcanesc/commands/stat/esc_stat.hpp
diff --git a/src/modules/uavcanesc/indication_controller.cpp b/src/drivers/uavcanesc/indication_controller.cpp
similarity index 100%
rename from src/modules/uavcanesc/indication_controller.cpp
rename to src/drivers/uavcanesc/indication_controller.cpp
diff --git a/src/modules/uavcanesc/indication_controller.hpp b/src/drivers/uavcanesc/indication_controller.hpp
similarity index 100%
rename from src/modules/uavcanesc/indication_controller.hpp
rename to src/drivers/uavcanesc/indication_controller.hpp
diff --git a/src/modules/uavcanesc/led.cpp b/src/drivers/uavcanesc/led.cpp
similarity index 100%
rename from src/modules/uavcanesc/led.cpp
rename to src/drivers/uavcanesc/led.cpp
diff --git a/src/modules/uavcanesc/led.hpp b/src/drivers/uavcanesc/led.hpp
similarity index 100%
rename from src/modules/uavcanesc/led.hpp
rename to src/drivers/uavcanesc/led.hpp
diff --git a/src/modules/uavcanesc/nshterm/CMakeLists.txt b/src/drivers/uavcanesc/nshterm/CMakeLists.txt
similarity index 99%
rename from src/modules/uavcanesc/nshterm/CMakeLists.txt
rename to src/drivers/uavcanesc/nshterm/CMakeLists.txt
index 3e4bcfc1f318a1c1dd8d7ea30e368d9504f2ac4f..bf87d034a1e38e701be416acc76e60562b467c86 100644
--- a/src/modules/uavcanesc/nshterm/CMakeLists.txt
+++ b/src/drivers/uavcanesc/nshterm/CMakeLists.txt
@@ -42,5 +42,3 @@ px4_add_module(
     PRIORITY "SCHED_PRIORITY_DEFAULT-30"
 	DEPENDS
 	)
-
-#
diff --git a/src/modules/uavcanesc/nshterm/nshterm.c b/src/drivers/uavcanesc/nshterm/nshterm.c
similarity index 100%
rename from src/modules/uavcanesc/nshterm/nshterm.c
rename to src/drivers/uavcanesc/nshterm/nshterm.c
diff --git a/src/modules/uavcanesc/uavcan_driver.hpp b/src/drivers/uavcanesc/uavcan_driver.hpp
similarity index 100%
rename from src/modules/uavcanesc/uavcan_driver.hpp
rename to src/drivers/uavcanesc/uavcan_driver.hpp
diff --git a/src/modules/uavcanesc/uavcanesc_main.cpp b/src/drivers/uavcanesc/uavcanesc_main.cpp
similarity index 100%
rename from src/modules/uavcanesc/uavcanesc_main.cpp
rename to src/drivers/uavcanesc/uavcanesc_main.cpp
diff --git a/src/modules/uavcanesc/uavcanesc_main.hpp b/src/drivers/uavcanesc/uavcanesc_main.hpp
similarity index 100%
rename from src/modules/uavcanesc/uavcanesc_main.hpp
rename to src/drivers/uavcanesc/uavcanesc_main.hpp
diff --git a/src/modules/uavcanesc/uavcanesc_params.c b/src/drivers/uavcanesc/uavcanesc_params.c
similarity index 100%
rename from src/modules/uavcanesc/uavcanesc_params.c
rename to src/drivers/uavcanesc/uavcanesc_params.c
diff --git a/src/modules/uavcannode/.gitignore b/src/drivers/uavcannode/.gitignore
similarity index 100%
rename from src/modules/uavcannode/.gitignore
rename to src/drivers/uavcannode/.gitignore
diff --git a/src/modules/uavcannode/CMakeLists.txt b/src/drivers/uavcannode/CMakeLists.txt
similarity index 95%
rename from src/modules/uavcannode/CMakeLists.txt
rename to src/drivers/uavcannode/CMakeLists.txt
index 80bea48f5c478547e8e48836f523d5ce9bdb7f87..2d2b725bb013ab95a63a327d546b674ddb33fb62 100644
--- a/src/modules/uavcannode/CMakeLists.txt
+++ b/src/drivers/uavcannode/CMakeLists.txt
@@ -31,7 +31,9 @@
 #
 ############################################################################
 
-px4_add_git_submodule(TARGET git_uavcan PATH "../uavcan/libuavcan")
+set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/drivers/uavcan/libuavcan)
+
+px4_add_git_submodule(TARGET git_uavcan PATH ${LIBUAVCAN_DIR})
 
 set(UAVCAN_USE_CPP03 ON CACHE BOOL "uavcan cpp03")
 set(UAVCAN_PLATFORM stm32 CACHE STRING "uavcan platform")
@@ -50,8 +52,6 @@ add_definitions(
 		-DUAVCAN_USE_EXTERNAL_SNPRINT
 		)
 
-set(LIBUAVCAN_DIR ${PX4_SOURCE_DIR}/src/modules/uavcan/libuavcan)
-
 add_subdirectory(${LIBUAVCAN_DIR} uavcannode_libuavcan)
 add_dependencies(uavcan prebuild_targets)
 
diff --git a/src/modules/uavcannode/indication_controller.cpp b/src/drivers/uavcannode/indication_controller.cpp
similarity index 100%
rename from src/modules/uavcannode/indication_controller.cpp
rename to src/drivers/uavcannode/indication_controller.cpp
diff --git a/src/modules/uavcannode/indication_controller.hpp b/src/drivers/uavcannode/indication_controller.hpp
similarity index 100%
rename from src/modules/uavcannode/indication_controller.hpp
rename to src/drivers/uavcannode/indication_controller.hpp
diff --git a/src/modules/uavcannode/led.cpp b/src/drivers/uavcannode/led.cpp
similarity index 100%
rename from src/modules/uavcannode/led.cpp
rename to src/drivers/uavcannode/led.cpp
diff --git a/src/modules/uavcannode/led.hpp b/src/drivers/uavcannode/led.hpp
similarity index 100%
rename from src/modules/uavcannode/led.hpp
rename to src/drivers/uavcannode/led.hpp
diff --git a/src/modules/uavcannode/resources.cpp b/src/drivers/uavcannode/resources.cpp
similarity index 100%
rename from src/modules/uavcannode/resources.cpp
rename to src/drivers/uavcannode/resources.cpp
diff --git a/src/modules/uavcannode/resources.hpp b/src/drivers/uavcannode/resources.hpp
similarity index 100%
rename from src/modules/uavcannode/resources.hpp
rename to src/drivers/uavcannode/resources.hpp
diff --git a/src/modules/uavcannode/sim_controller.cpp b/src/drivers/uavcannode/sim_controller.cpp
similarity index 100%
rename from src/modules/uavcannode/sim_controller.cpp
rename to src/drivers/uavcannode/sim_controller.cpp
diff --git a/src/modules/uavcannode/sim_controller.hpp b/src/drivers/uavcannode/sim_controller.hpp
similarity index 100%
rename from src/modules/uavcannode/sim_controller.hpp
rename to src/drivers/uavcannode/sim_controller.hpp
diff --git a/src/modules/uavcannode/uavcannode_main.cpp b/src/drivers/uavcannode/uavcannode_main.cpp
similarity index 100%
rename from src/modules/uavcannode/uavcannode_main.cpp
rename to src/drivers/uavcannode/uavcannode_main.cpp
diff --git a/src/modules/uavcannode/uavcannode_main.hpp b/src/drivers/uavcannode/uavcannode_main.hpp
similarity index 100%
rename from src/modules/uavcannode/uavcannode_main.hpp
rename to src/drivers/uavcannode/uavcannode_main.hpp
diff --git a/src/modules/uavcannode/uavcannode_params.c b/src/drivers/uavcannode/uavcannode_params.c
similarity index 100%
rename from src/modules/uavcannode/uavcannode_params.c
rename to src/drivers/uavcannode/uavcannode_params.c