diff --git a/Makefile.dep b/Makefile.dep
index fac58386961d4075a2498db0497afc024cb56838..f89090bbb578b4726370f066f8d8275f79a59f30 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -661,6 +661,10 @@ ifneq (,$(filter random,$(USEMODULE)))
     USEMODULE += hashes
   endif
 
+  ifeq (,$(filter puf_sram,$(USEMODULE)))
+    FEATURES_OPTIONAL += periph_hwrng
+  endif
+
   USEMODULE += luid
 endif
 
diff --git a/sys/random/random.c b/sys/random/random.c
index 3d356c8dcab45222094736b8df811cd9f64e73c2..ffd23fcfff9391d2309a3107cb08dd6ec8657a32 100644
--- a/sys/random/random.c
+++ b/sys/random/random.c
@@ -1,5 +1,6 @@
 /**
  * Copyright (C) 2017 Kaspar Schleiser <kaspar@schleiser.de>
+ *               2019 Freie Universität Berlin
  *
  * 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
@@ -14,6 +15,7 @@
  * @brief       PRNG seeding
  *
  * @author      Kaspar Schleiser <kaspar@schleiser.de>
+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
  * @}
  */
 
@@ -25,6 +27,9 @@
 #ifdef MODULE_PUF_SRAM
 #include "puf_sram.h"
 #endif
+#ifdef MODULE_PERIPH_HWRNG
+#include "periph/hwrng.h"
+#endif
 #ifdef MODULE_PERIPH_CPUID
 #include "periph/cpuid.h"
 #endif
@@ -41,6 +46,8 @@ void auto_init_random(void)
         LOG_WARNING("random: PUF SEED not fresh\n");
     }
     seed = puf_sram_seed;
+#elif defined (MODULE_PERIPH_HWRNG)
+    hwrng_read(&seed, 4);
 #elif defined (MODULE_PERIPH_CPUID)
     luid_get(&seed, 4);
 #else