diff --git a/pycardium/mpconfigport.h b/pycardium/mpconfigport.h
index d6affbd41aade2015de61c2b3f07d3d0d93d7520..a1c88a7476f0b63111a4e6049aaac33f32b7fa0c 100644
--- a/pycardium/mpconfigport.h
+++ b/pycardium/mpconfigport.h
@@ -23,6 +23,9 @@
 
 #define MICROPY_ENABLE_SOURCE_LINE          (1)
 
+/* urandom init */
+int mp_hal_trng_read_int(void);
+
 /* Builtin function and modules */
 #define MICROPY_PY_ALL_SPECIAL_METHODS      (1)
 #define MICROPY_PY_BUILTINS_HELP            (1)
@@ -32,6 +35,7 @@
 #define MICROPY_PY_UJSON                    (1)
 #define MICROPY_PY_URANDOM                  (1)
 #define MICROPY_PY_URANDOM_EXTRA_FUNCS      (1)
+#define MICROPY_PY_URANDOM_SEED_INIT_FUNC   (mp_hal_trng_read_int())
 #define MICROPY_PY_URE                      (1)
 #define MICROPY_PY_URE_MATCH_GROUPS         (1)
 #define MICROPY_PY_URE_MATCH_SPAN_START_END (1)
diff --git a/pycardium/mphalport.c b/pycardium/mphalport.c
index 1fa75b64720aca8111844f56f259bb3499f388fd..60cd9df0cdf1e08a01ffd3df84772d9c6276e7ac 100644
--- a/pycardium/mphalport.c
+++ b/pycardium/mphalport.c
@@ -152,3 +152,14 @@ void NORETURN nlr_jump_fail(void *val)
 
 	Reset_Handler();
 }
+
+/******************************************************************************
+ * TRNG
+ */
+
+int mp_hal_trng_read_int(void)
+{
+	int result;
+	epic_trng_read((uint8_t *)&result, sizeof(result));
+	return result;
+}