diff --git a/Makefile.dep b/Makefile.dep
index 47f9d795bba43ab9972175a674ab1fa4364a0ed5..b5012a6f426b3c496072eab1500a2f888f5640a0 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -656,6 +656,8 @@ ifneq (,$(filter random,$(USEMODULE)))
   ifneq (,$(filter prng_tinymt32,$(USEMODULE)))
     USEMODULE += tinymt32
   endif
+
+  USEMODULE += luid
 endif
 
 ifneq (,$(filter openthread_contrib,$(USEMODULE)))
diff --git a/sys/auto_init/auto_init.c b/sys/auto_init/auto_init.c
index 726b673ab736a205d8289af7aa8626c305d94d9f..fa1248e3a6bea2703fd9ed331914c42aca1db8c8 100644
--- a/sys/auto_init/auto_init.c
+++ b/sys/auto_init/auto_init.c
@@ -80,10 +80,6 @@
 #include "net/fib.h"
 #endif
 
-#ifdef MODULE_PRNG
-#include "random.h"
-#endif
-
 #ifdef MODULE_GCOAP
 #include "net/gcoap.h"
 #endif
@@ -99,7 +95,8 @@
 void auto_init(void)
 {
 #ifdef MODULE_PRNG
-    random_init(0);
+    void auto_init_random(void);
+    auto_init_random();
 #endif
 #ifdef MODULE_XTIMER
     DEBUG("Auto init xtimer module.\n");
diff --git a/sys/random/Makefile b/sys/random/Makefile
index 372beceac515d95746396f34e8deb2306d97f80f..1068de18a3ee1fb73a29a0a6a06ff887a1753ea0 100644
--- a/sys/random/Makefile
+++ b/sys/random/Makefile
@@ -1,3 +1,5 @@
+SRC := seed.c
+
 BASE_MODULE := prng
 SUBMODULES := 1
 
diff --git a/sys/random/seed.c b/sys/random/seed.c
new file mode 100644
index 0000000000000000000000000000000000000000..b60f1285c797bc9e9e093926873549e97ef16d1c
--- /dev/null
+++ b/sys/random/seed.c
@@ -0,0 +1,41 @@
+/**
+ * Copyright (C) 2017 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 sys_random
+ * @{
+ * @file
+ *
+ * @brief PRNG seeding
+ *
+ * @author Kaspar Schleiser <kaspar@schleiser.de>
+ * @}
+ */
+
+#include <stdint.h>
+
+#include "log.h"
+#include "luid.h"
+#include "periph/cpuid.h"
+#include "random.h"
+
+#define ENABLE_DEBUG (0)
+#include "debug.h"
+
+void auto_init_random(void)
+{
+    uint32_t seed;
+#ifdef MODULE_PERIPH_CPUID
+    luid_get(&seed, 4);
+#else
+    LOG_WARNING("random: NO SEED AVAILABLE!\n");
+    seed = 1;
+#endif
+    DEBUG("random: using seed value %u\n", (unsigned)seed);
+    random_init(seed);
+}