diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
index 29a1062..fecfaa9 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -716,7 +716,7 @@
 		break;
 	}
 
-	ui->start_time = vb2ex_mtime();
+	ui->start_time_ms = vb2ex_mtime();
 
 	return VB2_REQUEST_UI_CONTINUE;
 }
@@ -774,7 +774,7 @@
 vb2_error_t developer_mode_action(struct vb2_ui_context *ui)
 {
 	const int use_short = vb2api_use_short_dev_screen_delay(ui->ctx);
-	uint64_t elapsed;
+	uint64_t elapsed_ms;
 
 	/* TODO(b/159579189): Split this case into a separate root screen */
 	if (!vb2_dev_boot_allowed(ui->ctx))
@@ -786,24 +786,24 @@
 	if (ui->disable_timer)
 		return VB2_REQUEST_UI_CONTINUE;
 
-	elapsed = vb2ex_mtime() - ui->start_time;
+	elapsed_ms = vb2ex_mtime() - ui->start_time_ms;
 
 	/* If we're using short delay, wait 2 seconds and don't beep. */
-	if (use_short && elapsed > 2 * VB2_MSEC_PER_SEC) {
+	if (use_short && elapsed_ms > 2 * VB2_MSEC_PER_SEC) {
 		VB2_DEBUG("Booting default target after 2s\n");
 		ui->disable_timer = 1;
 		return vb2_ui_menu_select(ui);
 	}
 
 	/* Otherwise, beep at 20 and 20.5 seconds. */
-	if ((ui->beep_count == 0 && elapsed > 20 * VB2_MSEC_PER_SEC) ||
-	    (ui->beep_count == 1 && elapsed > 20 * VB2_MSEC_PER_SEC + 500)) {
+	if ((ui->beep_count == 0 && elapsed_ms > 20 * VB2_MSEC_PER_SEC) ||
+	    (ui->beep_count == 1 && elapsed_ms > 20 * VB2_MSEC_PER_SEC + 500)) {
 		vb2ex_beep(250, 400);
 		ui->beep_count++;
 	}
 
 	/* Stop after 30 seconds. */
-	if (elapsed > 30 * VB2_MSEC_PER_SEC) {
+	if (elapsed_ms > 30 * VB2_MSEC_PER_SEC) {
 		VB2_DEBUG("Booting default target after 30s\n");
 		ui->disable_timer = 1;
 		return vb2_ui_menu_select(ui);
diff --git a/firmware/2lib/include/2ui.h b/firmware/2lib/include/2ui.h
index d8c3847..44e24fd 100644
--- a/firmware/2lib/include/2ui.h
+++ b/firmware/2lib/include/2ui.h
@@ -99,7 +99,7 @@
 
 	/* For developer mode. */
 	int disable_timer;
-	uint32_t start_time;
+	uint32_t start_time_ms;
 	int beep_count;
 
 	/* For manual recovery. */
diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c
index 8feb5e5..89442fe 100644
--- a/tests/vb2_ui_tests.c
+++ b/tests/vb2_ui_tests.c
@@ -65,9 +65,9 @@
 static int mock_key_trusted[64];
 static int mock_key_total;
 
-static uint32_t mock_get_timer_last;
-static uint32_t mock_time;
-static const uint32_t mock_time_start = 31ULL * VB2_MSEC_PER_SEC;
+static uint32_t mock_get_timer_last_ms;
+static uint32_t mock_time_ms;
+static const uint32_t mock_time_start_ms = 31ULL * VB2_MSEC_PER_SEC;
 
 static struct beep_call mock_beep[8];
 static int mock_beep_count;
@@ -301,8 +301,8 @@
 	mock_key_total = 0;
 
 	/* For vb2ex_mtime and vb2ex_msleep  */
-	mock_get_timer_last = 0;
-	mock_time = mock_time_start;
+	mock_get_timer_last_ms = 0;
+	mock_time_ms = mock_time_start_ms;
 
 	/* For vb2ex_beep */
 	memset(mock_beep, 0, sizeof(mock_beep));
@@ -438,19 +438,19 @@
 
 uint32_t vb2ex_mtime(void)
 {
-	mock_get_timer_last = mock_time;
-	return mock_time;
+	mock_get_timer_last_ms = mock_time_ms;
+	return mock_time_ms;
 }
 
 void vb2ex_msleep(uint32_t msec)
 {
-	mock_time += msec;
+	mock_time_ms += msec;
 }
 
 void vb2ex_beep(uint32_t msec, uint32_t frequency)
 {
 	struct beep_call *beep;
-	uint32_t cur_time = mock_time - mock_time_start;
+	uint32_t cur_time = mock_time_ms - mock_time_start_ms;
 
 	VB2_DEBUG("beep %d: msec = %d, frequency = %d at %d msec\n",
 		  mock_beep_count, msec, frequency, cur_time);
@@ -473,7 +473,7 @@
 			  "  beep started within FUZZ_MS");
 	}
 
-	mock_time += msec;
+	mock_time_ms += msec;
 	mock_beep_count++;
 }
 
@@ -590,7 +590,7 @@
 	expect_beep(250, 400, 20 * VB2_MSEC_PER_SEC + 500);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"proceed to internal disk after timeout");
-	TEST_TRUE(mock_get_timer_last - mock_time_start >=
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
 		  30 * VB2_MSEC_PER_SEC, "  finished delay");
 	TEST_EQ(mock_beep_count, 2, "  beeped twice");
 	TEST_TRUE(mock_iters >= mock_vbtlk_total, "  used up mock_vbtlk");
@@ -601,9 +601,9 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"use short delay");
-	TEST_TRUE(mock_get_timer_last - mock_time_start >=
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
 		  2 * VB2_MSEC_PER_SEC, "  finished delay");
-	TEST_TRUE(mock_get_timer_last - mock_time_start <
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 		  30 * VB2_MSEC_PER_SEC, "  not a 30s delay");
 	TEST_EQ(mock_beep_count, 0, "  never beeped");
 
@@ -638,7 +638,7 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"select boot internal in dev menu");
-	TEST_TRUE(mock_get_timer_last - mock_time_start <
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 		  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 
 	/* Ctrl+D = boot internal */
@@ -647,7 +647,7 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"ctrl+d = boot internal");
-	TEST_TRUE(mock_get_timer_last - mock_time_start <
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 		  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 
 	/* VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal */
@@ -657,7 +657,7 @@
 		add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 		TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 			"VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal");
-		TEST_TRUE(mock_get_timer_last - mock_time_start <
+		TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 			  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 	}
 
@@ -669,7 +669,7 @@
 	expect_beep(250, 400, 20 * VB2_MSEC_PER_SEC + 500);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"proceed to external disk after timeout");
-	TEST_TRUE(mock_get_timer_last - mock_time_start >=
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
 		  30 * VB2_MSEC_PER_SEC, "  finished delay");
 	TEST_EQ(mock_beep_count, 2, "  beeped twice");
 	TEST_TRUE(mock_iters >= mock_vbtlk_total, "  used up mock_vbtlk");
@@ -695,7 +695,7 @@
 	mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"select boot external in dev menu");
-	TEST_TRUE(mock_get_timer_last - mock_time_start <
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 		  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 
 	/* Ctrl+U = boot external */
@@ -704,7 +704,7 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"ctrl+u = boot external");
-	TEST_TRUE(mock_get_timer_last - mock_time_start <
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 		  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 
 	/* Ctrl+L = boot legacy (allowed) */
@@ -714,7 +714,7 @@
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"ctrl+l = boot legacy");
 	TEST_EQ(mock_vbexlegacy_called, 1, "  VbExLegacy called");
-	TEST_TRUE(mock_get_timer_last - mock_time_start <
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 		  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 
 	/* Ctrl+L = boot legacy (disallowed) */
@@ -723,7 +723,7 @@
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"ctrl+l = boot legacy");
 	TEST_EQ(mock_vbexlegacy_called, 0, "  VbExLegacy not called");
-	TEST_TRUE(mock_get_timer_last - mock_time_start <
+	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 		  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 
 	/* VB_BUTTON_VOL_UP_LONG_PRESS = boot external */
@@ -733,7 +733,7 @@
 		add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
 		TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 			"VB_BUTTON_VOL_UP_LONG_PRESS = boot external");
-		TEST_TRUE(mock_get_timer_last - mock_time_start <
+		TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
 			  30 * VB2_MSEC_PER_SEC, "  delay aborted");
 	}
 
