diff --git a/sys/auto_init/auto_init.c b/sys/auto_init/auto_init.c
index 02463662ced4511735272de44b5d707c4792f4e7..1f21226c6ac7b9641f6713b2555488c9043db688 100644
--- a/sys/auto_init/auto_init.c
+++ b/sys/auto_init/auto_init.c
@@ -335,6 +335,11 @@ void auto_init(void)
     auto_init_kw2xrf();
 #endif
 
+#ifdef MODULE_NG_NETDEV_ETH
+    extern void auto_init_ng_netdev_eth(void);
+    auto_init_ng_netdev_eth();
+#endif
+
 #endif /* MODULE_AUTO_INIT_NG_NETIF */
 
 #ifdef MODULE_NG_IPV6_NETIF
diff --git a/sys/auto_init/netif/auto_init_ng_netdev_eth.c b/sys/auto_init/netif/auto_init_ng_netdev_eth.c
new file mode 100644
index 0000000000000000000000000000000000000000..19803a5fb4770012bad3fa98a33898ae488e4487
--- /dev/null
+++ b/sys/auto_init/netif/auto_init_ng_netdev_eth.c
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2015 Kaspar Schleiser <kaspar@schleiser.de>
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser
+ * General Public License v2.1. See the file LICENSE in the top level
+ * directory for more details.
+ *
+ */
+
+/*
+ * @ingroup auto_init_ng_netif
+ * @{
+ *
+ * @file
+ * @brief   Auto initialization for netdev Ethernet network interfaces
+ *
+ * @author  Kaspar Schleiser <kaspar@schleiser.de>
+ * @author  Oliver Hahm <oliver.hahm@inria.fr>
+ */
+
+#ifdef MODULE_NG_NETDEV_ETH
+
+#include "board.h"
+#include "net/ng_nomac.h"
+#include "net/ng_netbase.h"
+
+#include "net/ng_netdev_eth.h"
+#include "net/dev_eth.h"
+#include "dev_eth_tap.h"
+
+#define ENABLE_DEBUG (0)
+#include "debug.h"
+
+/**
+ * @brief   Define stack parameters for the MAC layer thread
+ * @{
+ */
+#define NETDEV_ETH_MAC_STACKSIZE     (THREAD_STACKSIZE_DEFAULT)
+#define NETDEV_ETH_MAC_PRIO          (THREAD_PRIORITY_MAIN - 3)
+
+static char _nomac_stack[NETDEV_ETH_MAC_STACKSIZE];
+
+void auto_init_ng_netdev_eth(void)
+{
+    DEBUG("Initializing NETDEV_ETH device\n");
+    int res = ng_netdev_eth_init(&ng_netdev_eth, (dev_eth_t*)&dev_eth_tap);
+
+    if (res < 0) {
+        DEBUG("Error initializing NETDEV_ETH device!");
+    }
+    else {
+        ng_nomac_init(_nomac_stack, NETDEV_ETH_MAC_STACKSIZE, NETDEV_ETH_MAC_PRIO,
+                "tapnet", (ng_netdev_t *)&ng_netdev_eth);
+    }
+}
+#else
+typedef int dont_be_pedantic;
+#endif /* MODULE_NG_NETDEV_ETH */
+
+/** @} */
diff --git a/tests/driver_netdev_eth/Makefile b/tests/driver_netdev_eth/Makefile
index 1ed37331c4cd952b79ecf90f83e03ccc86cf2d01..30d326d8bf50af5c22b2a51a65874dbac83f47aa 100644
--- a/tests/driver_netdev_eth/Makefile
+++ b/tests/driver_netdev_eth/Makefile
@@ -8,6 +8,7 @@ USEMODULE += ng_netbase
 USEMODULE += ng_nomac
 USEMODULE += ng_pktdump
 USEMODULE += ng_netdev_eth
+USEMODULE += auto_init_ng_netif
 USEMODULE += shell
 USEMODULE += shell_commands
 
diff --git a/tests/driver_netdev_eth/main.c b/tests/driver_netdev_eth/main.c
index f7c1fca7b480a906dbb9071a7926afd185bc95d1..89cd0affd07b0ca13f21fbc37e6f5af5d306f3b9 100644
--- a/tests/driver_netdev_eth/main.c
+++ b/tests/driver_netdev_eth/main.c
@@ -38,11 +38,6 @@
  */
 #define SHELL_BUFSIZE           (64U)
 
-/**
- * @brief   Stack for the nomac thread
- */
-static char nomac_stack[THREAD_STACKSIZE_DEFAULT];
-
 /**
  * @brief   Read chars from STDIO
  */
@@ -64,15 +59,11 @@ void shell_put(int c)
  */
 int main(void)
 {
-    int res;
     shell_t shell;
     ng_netreg_entry_t dump;
 
     puts("netdev ethernet device driver test");
 
-    /* initialize network module(s) */
-    ng_netif_init();
-
     /* initialize and register pktdump */
     dump.pid = ng_pktdump_init();
     dump.demux_ctx = NG_NETREG_DEMUX_CTX_ALL;
@@ -84,18 +75,6 @@ int main(void)
 
     ng_netreg_register(NG_NETTYPE_UNDEF, &dump);
 
-    /* initialize netdev_eth layer */
-    ng_netdev_eth_init(&ng_netdev_eth, (dev_eth_t*)&dev_eth_tap);
-
-    /* start MAC layer */
-    res = ng_nomac_init(nomac_stack, sizeof(nomac_stack), THREAD_PRIORITY_MAIN - 3,
-                        "tapnet_l2", (ng_netdev_t *)&ng_netdev_eth);
-
-    if (res < 0) {
-        printf("Error starting nomac thread. res=%i\n", res);
-        return -1;
-    }
-
     /* start the shell */
     shell_init(&shell, NULL, SHELL_BUFSIZE, shell_read, shell_put);
     shell_run(&shell);