diff --git a/epicardium/modules/vibra.c b/epicardium/modules/vibra.c
index da1325093b6866037c1882da6ad79d613ee833a4..aacbdf4e8c5a3d41375f60577fb4ebf5ec5e9c06 100644
--- a/epicardium/modules/vibra.c
+++ b/epicardium/modules/vibra.c
@@ -27,22 +27,24 @@ void epic_vibra_vibrate(int millis)
 {
 	int ticks = millis * (configTICK_RATE_HZ / 1000);
 
-	/* Make sure the duration is valid */
-	if (ticks < 1) {
-		/* Disable a potentially running motor */
-		epic_vibra_set(0);
-		return;
-	}
-
 	if (vibra_timer == NULL) {
 		vibra_timer = xTimerCreateStatic(
 			"vibratimer",
-			ticks,
+			1,
 			pdFALSE, /* one-shot */
 			0,
 			vTimerCallback,
 			&vibra_timer_data);
 	}
+
+	/* Make sure the duration is valid */
+	if (ticks < 1) {
+		/* Disable a potentially running motor / timer */
+		epic_vibra_set(0);
+		xTimerStop(vibra_timer, 0);
+		return;
+	}
+
 	if (vibra_timer != NULL) {
 		epic_vibra_set(1);
 		xTimerChangePeriod(vibra_timer, ticks, 0);