diff --git a/sys/auto_init/netif/auto_init_at86rf2xx.c b/sys/auto_init/netif/auto_init_at86rf2xx.c
index 1766b4f7c250084167ae62f22b7eecbcea06759d..e49d355faadc238a30fb8a06e9fd905d8b9d8706 100644
--- a/sys/auto_init/netif/auto_init_at86rf2xx.c
+++ b/sys/auto_init/netif/auto_init_at86rf2xx.c
@@ -21,8 +21,12 @@
 
 #include "log.h"
 #include "board.h"
+#ifdef MODULE_GNRC_NETIF2
+#include "net/gnrc/netif2/ieee802154.h"
+#else
 #include "net/gnrc/netdev.h"
 #include "net/gnrc/netdev/ieee802154.h"
+#endif
 #include "net/gnrc/lwmac/lwmac.h"
 #include "net/gnrc.h"
 
@@ -35,25 +39,35 @@
  */
 #define AT86RF2XX_MAC_STACKSIZE     (THREAD_STACKSIZE_DEFAULT)
 #ifndef AT86RF2XX_MAC_PRIO
+#ifdef MODULE_GNRC_NETIF2
+#define AT86RF2XX_MAC_PRIO          (GNRC_NETIF2_PRIO)
+#else
 #define AT86RF2XX_MAC_PRIO          (GNRC_NETDEV_MAC_PRIO)
 #endif
+#endif
 
 #define AT86RF2XX_NUM (sizeof(at86rf2xx_params) / sizeof(at86rf2xx_params[0]))
 
 static at86rf2xx_t at86rf2xx_devs[AT86RF2XX_NUM];
+#ifndef MODULE_GNRC_NETIF2
 static gnrc_netdev_t gnrc_adpt[AT86RF2XX_NUM];
+#endif
 static char _at86rf2xx_stacks[AT86RF2XX_NUM][AT86RF2XX_MAC_STACKSIZE];
 
 void auto_init_at86rf2xx(void)
 {
     for (unsigned i = 0; i < AT86RF2XX_NUM; i++) {
-        int res;
-
         LOG_DEBUG("[auto_init_netif] initializing at86rf2xx #%u\n", i);
 
         at86rf2xx_setup(&at86rf2xx_devs[i], &at86rf2xx_params[i]);
-        res = gnrc_netdev_ieee802154_init(&gnrc_adpt[i],
-                                          (netdev_ieee802154_t *)&at86rf2xx_devs[i]);
+#ifdef MODULE_GNRC_NETIF2
+        gnrc_netif2_ieee802154_create(_at86rf2xx_stacks[i],
+                                      AT86RF2XX_MAC_STACKSIZE,
+                                      AT86RF2XX_MAC_PRIO, "at86rf2xx",
+                                      (netdev_t *)&at86rf2xx_devs[i]);
+#else
+        int res = gnrc_netdev_ieee802154_init(&gnrc_adpt[i],
+                                              (netdev_ieee802154_t *)&at86rf2xx_devs[i]);
 
         if (res < 0) {
             LOG_ERROR("[auto_init_netif] error initializing at86rf2xx radio #%u\n", i);
@@ -73,6 +87,7 @@ void auto_init_at86rf2xx(void)
                              &gnrc_adpt[i]);
 #endif
         }
+#endif
     }
 }
 #else
diff --git a/sys/auto_init/netif/auto_init_cc2420.c b/sys/auto_init/netif/auto_init_cc2420.c
index b430582eb3237d12a431d24455ec9b99e05ae433..76cc2ac8c17feec2f3cfa902a4a59ceab21816a7 100644
--- a/sys/auto_init/netif/auto_init_cc2420.c
+++ b/sys/auto_init/netif/auto_init_cc2420.c
@@ -23,8 +23,12 @@
 
 #include "log.h"
 #include "board.h"
+#ifdef MODULE_GNRC_NETIF2
+#include "net/gnrc/netif2/ieee802154.h"
+#else
 #include "net/gnrc/netdev.h"
 #include "net/gnrc/netdev/ieee802154.h"
+#endif
 #include "net/gnrc.h"
 
 #include "cc2420.h"
@@ -36,8 +40,12 @@
  */
 #define CC2420_MAC_STACKSIZE           (THREAD_STACKSIZE_MAIN)
 #ifndef CC2420_MAC_PRIO
+#ifdef MODULE_GNRC_NETIF2
+#define CC2420_MAC_PRIO                (GNRC_NETIF2_PRIO)
+#else
 #define CC2420_MAC_PRIO                (GNRC_NETDEV_MAC_PRIO)
 #endif
+#endif
 /** @} */
 
 /**
@@ -50,7 +58,9 @@
  * @{
  */
 static cc2420_t cc2420_devs[CC2420_NUMOF];
+#ifndef MODULE_GNRC_NETIF2
 static gnrc_netdev_t gnrc_adpt[CC2420_NUMOF];
+#endif
 static char _cc2420_stacks[CC2420_NUMOF][CC2420_MAC_STACKSIZE];
 /** @} */
 
@@ -60,6 +70,11 @@ void auto_init_cc2420(void)
         LOG_DEBUG("[auto_init_netif] initializing cc2420 #%u\n", i);
 
         cc2420_setup(&cc2420_devs[i], &cc2420_params[i]);
+#ifdef MODULE_GNRC_NETIF2
+        gnrc_netif2_ieee802154_create(_cc2420_stacks[i], CC2420_MAC_STACKSIZE,
+                                      CC2420_MAC_PRIO, "cc2420",
+                                      (netdev_t *)&cc2420_devs[i]);
+#else
         int res = gnrc_netdev_ieee802154_init(&gnrc_adpt[i],
                                               (netdev_ieee802154_t *)&cc2420_devs[i]);
 
@@ -72,6 +87,7 @@ void auto_init_cc2420(void)
                              CC2420_MAC_PRIO,
                              "cc2420", &gnrc_adpt[i]);
         }
+#endif
     }
 }
 
diff --git a/sys/auto_init/netif/auto_init_cc2538_rf.c b/sys/auto_init/netif/auto_init_cc2538_rf.c
index 29c896c30a647ea1dbfe56d8fc35e8bfcd33740d..6c89ca4124a6bb0579c9adec51bfa62e7adf9f7c 100644
--- a/sys/auto_init/netif/auto_init_cc2538_rf.c
+++ b/sys/auto_init/netif/auto_init_cc2538_rf.c
@@ -20,8 +20,12 @@
 #ifdef MODULE_CC2538_RF
 
 #include "log.h"
+#ifdef MODULE_GNRC_NETIF2
+#include "net/gnrc/netif2/ieee802154.h"
+#else
 #include "net/gnrc/netdev.h"
 #include "net/gnrc/netdev/ieee802154.h"
+#endif
 
 #include "cc2538_rf.h"
 
@@ -31,22 +35,34 @@
  */
 #define CC2538_MAC_STACKSIZE       (THREAD_STACKSIZE_DEFAULT)
 #ifndef CC2538_MAC_PRIO
+#ifdef MODULE_GNRC_NETIF2
+#define CC2538_MAC_PRIO            (GNRC_NETIF2_PRIO)
+#else
 #define CC2538_MAC_PRIO            (GNRC_NETDEV_MAC_PRIO)
 #endif
+#endif
 
 static cc2538_rf_t cc2538_rf_dev;
+#ifndef MODULE_GNRC_NETIF2
 static gnrc_netdev_t gnrc_adpt;
+#endif
 static char _cc2538_rf_stack[CC2538_MAC_STACKSIZE];
 
 void auto_init_cc2538_rf(void)
 {
-    int res;
-
     LOG_DEBUG("[auto_init_netif] initializing cc2538 radio\n");
 
     cc2538_setup(&cc2538_rf_dev);
-    res = gnrc_netdev_ieee802154_init(&gnrc_adpt,
-                                      (netdev_ieee802154_t *)&cc2538_rf_dev);
+#ifdef MODULE_GNRC_NETIF2
+    if (!gnrc_netif2_ieee802154_create(_cc2538_rf_stack,
+                                       CC2538_MAC_STACKSIZE,
+                                       CC2538_MAC_PRIO, "cc2538_rf",
+                                       (netdev_t *)&cc2538_rf_dev)) {
+        LOG_ERROR("[auto_init_netif] error initializing cc2538 radio\n");
+    }
+#else
+    int res = gnrc_netdev_ieee802154_init(&gnrc_adpt,
+                                          (netdev_ieee802154_t *)&cc2538_rf_dev);
 
     if (res < 0) {
         LOG_ERROR("[auto_init_netif] error initializing cc2538 radio\n");
@@ -58,6 +74,7 @@ void auto_init_cc2538_rf(void)
                          "cc2538_rf",
                          &gnrc_adpt);
     }
+#endif
 }
 
 #else
diff --git a/sys/auto_init/netif/auto_init_kw2xrf.c b/sys/auto_init/netif/auto_init_kw2xrf.c
index 3f8b5afeff03369d0530039b863a23eeb041d836..b2a6d2703040f3f5ac540f91ea84fa565b1fc56c 100644
--- a/sys/auto_init/netif/auto_init_kw2xrf.c
+++ b/sys/auto_init/netif/auto_init_kw2xrf.c
@@ -24,8 +24,12 @@
 
 #include "log.h"
 #include "board.h"
+#ifdef MODULE_GNRC_NETIF2
+#include "net/gnrc/netif2/ieee802154.h"
+#else
 #include "net/gnrc/netdev.h"
 #include "net/gnrc/netdev/ieee802154.h"
+#endif
 #include "net/gnrc.h"
 
 #include "kw2xrf.h"
@@ -37,13 +41,19 @@
  */
 #define KW2XRF_MAC_STACKSIZE     (THREAD_STACKSIZE_DEFAULT)
 #ifndef KW2XRF_MAC_PRIO
+#ifdef MODULE_GNRC_NETIF2
+#define KW2XRF_MAC_PRIO          (GNRC_NETIF2_PRIO)
+#else
 #define KW2XRF_MAC_PRIO          (GNRC_NETDEV_MAC_PRIO)
 #endif
+#endif
 
 #define KW2XRF_NUM (sizeof(kw2xrf_params)/sizeof(kw2xrf_params[0]))
 
 static kw2xrf_t kw2xrf_devs[KW2XRF_NUM];
+#ifndef MODULE_GNRC_NETIF2
 static gnrc_netdev_t gnrc_adpt[KW2XRF_NUM];
+#endif
 static char _kw2xrf_stacks[KW2XRF_NUM][KW2XRF_MAC_STACKSIZE];
 
 void auto_init_kw2xrf(void)
@@ -53,6 +63,11 @@ void auto_init_kw2xrf(void)
 
         LOG_DEBUG("[auto_init_netif] initializing kw2xrf #%u\n", i);
         kw2xrf_setup(&kw2xrf_devs[i], (kw2xrf_params_t*) p);
+#ifdef MODULE_GNRC_NETIF2
+        gnrc_netif2_ieee802154_create(_kw2xrf_stacks[i], KW2XRF_MAC_STACKSIZE,
+                                      KW2XRF_MAC_PRIO, "kw2xrf",
+                                      (netdev_t *)&kw2xrf_devs[i]);
+#else
         if (gnrc_netdev_ieee802154_init(&gnrc_adpt[i], (netdev_ieee802154_t *)&kw2xrf_devs[i]) < 0) {
             LOG_ERROR("[auto_init_netif] error, initializing kw2xrf #%u\n", i);
         }
@@ -60,6 +75,7 @@ void auto_init_kw2xrf(void)
             gnrc_netdev_init(_kw2xrf_stacks[i], KW2XRF_MAC_STACKSIZE,
                              KW2XRF_MAC_PRIO, "kw2xrf", &gnrc_adpt[i]);
         }
+#endif
     }
 }
 #else
diff --git a/sys/auto_init/netif/auto_init_mrf24j40.c b/sys/auto_init/netif/auto_init_mrf24j40.c
index 41c2db40f1f78074edc913567a7bdca68e95524a..7a1e94671227b5644eba6e2b23b98b1385ba8fa8 100644
--- a/sys/auto_init/netif/auto_init_mrf24j40.c
+++ b/sys/auto_init/netif/auto_init_mrf24j40.c
@@ -21,8 +21,12 @@
 
 #include "log.h"
 #include "board.h"
+#ifdef MODULE_GNRC_NETIF2
+#include "net/gnrc/netif2/ieee802154.h"
+#else
 #include "net/gnrc/netdev.h"
 #include "net/gnrc/netdev/ieee802154.h"
+#endif
 #include "net/gnrc.h"
 
 #include "mrf24j40.h"
@@ -34,25 +38,35 @@
  */
 #define MRF24J40_MAC_STACKSIZE     (THREAD_STACKSIZE_DEFAULT)
 #ifndef MRF24J40_MAC_PRIO
+#ifdef MODULE_GNRC_NETIF2
+#define MRF24J40_MAC_PRIO          (GNRC_NETIF2_PRIO)
+#else
 #define MRF24J40_MAC_PRIO          (GNRC_NETDEV_MAC_PRIO)
 #endif
+#endif
 
 #define MRF24J40_NUM (sizeof(mrf24j40_params) / sizeof(mrf24j40_params[0]))
 
 static mrf24j40_t mrf24j40_devs[MRF24J40_NUM];
+#ifndef MODULE_GNRC_NETIF2
 static gnrc_netdev_t gnrc_adpt[MRF24J40_NUM];
+#endif
 static char _mrf24j40_stacks[MRF24J40_NUM][MRF24J40_MAC_STACKSIZE];
 
 void auto_init_mrf24j40(void)
 {
     for (unsigned i = 0; i < MRF24J40_NUM; i++) {
-        int res;
-
         LOG_DEBUG("[auto_init_netif] initializing mrf24j40 #%u\n", i);
 
         mrf24j40_setup(&mrf24j40_devs[i], &mrf24j40_params[i]);
-        res = gnrc_netdev_ieee802154_init(&gnrc_adpt[i],
-                                          (netdev_ieee802154_t *)&mrf24j40_devs[i]);
+#ifdef MODULE_GNRC_NETIF2
+        gnrc_netif2_ieee802154_create(_mrf24j40_stacks[i],
+                                      MRF24J40_MAC_STACKSIZE, MRF24J40_MAC_PRIO,
+                                      "mrf24j40",
+                                      (netdev_t *)&mrf24j40_devs[i]);
+#else
+        int res = gnrc_netdev_ieee802154_init(&gnrc_adpt[i],
+                                              (netdev_ieee802154_t *)&mrf24j40_devs[i]);
 
         if (res < 0) {
             LOG_ERROR("[auto_init_netif] error initializing mrf24j40 #%u\n", i);
@@ -64,6 +78,7 @@ void auto_init_mrf24j40(void)
                              "mrf24j40",
                              &gnrc_adpt[i]);
         }
+#endif
     }
 }
 #else