diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c
index cb6b70b51302234ca6d2c796afb51c09de74e581..5cb95dc286d3262504886d210580bdc9f9b12263 100644
--- a/epicardium/modules/hardware.c
+++ b/epicardium/modules/hardware.c
@@ -17,6 +17,7 @@
 
 #include "gpio.h"
 #include "i2c.h"
+#include "rtc.h"
 #include "spi.h"
 #include "trng.h"
 
@@ -70,6 +71,21 @@ int hardware_early_init(void)
 	 */
 	PB_Init();
 
+	/* Enable 32 kHz output */
+	while (RTC_SquareWave(
+		       MXC_RTC,
+		       SQUARE_WAVE_ENABLED,
+		       F_32KHZ,
+		       NOISE_IMMUNE_MODE,
+		       NULL) == E_BUSY
+	)
+		;
+
+	/* If we don't have a valid time yet, set it to 2019-01-01 */
+	if (RTC_GetSecond() < 1546300800UL) {
+		epic_rtc_set_milliseconds(1546300800UL * 1000);
+	}
+
 	/*
 	 * SPI for ECG
 	 */
diff --git a/lib/card10/card10.c b/lib/card10/card10.c
index 624db7609a5424fb6eacfc36c577090f3be69d9f..371912d5909ce5f479f7761ea3fe5b5d87e159e0 100644
--- a/lib/card10/card10.c
+++ b/lib/card10/card10.c
@@ -53,9 +53,6 @@ void card10_init(void)
 
 	TMR_Delay(MXC_TMR0, MSEC(1000), 0);
 
-	while (RTC_EnableRTCE(MXC_RTC) == E_BUSY)
-		;
-
 	// Enable 32 kHz output
 	while (RTC_SquareWave(
 		       MXC_RTC,
@@ -71,6 +68,9 @@ void card10_init(void)
 			;
 	}
 
+	while (RTC_EnableRTCE(MXC_RTC) == E_BUSY)
+		;
+
 	// Enable SPI
 	sys_cfg_spi_t spi17y_master_cfg;