diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
index c176875..b0851f4 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -55,58 +55,39 @@
 /* Functions used for log screens */
 
 static vb2_error_t log_page_init(struct vb2_ui_context *ui,
-				 uint32_t page_up_item,
 				 uint32_t page_down_item,
 				 uint32_t alternate_item)
 {
 	ui->state->current_page = 0;
 
-	if (ui->state->page_count == 1) {
-		ui->state->disabled_item_mask |= 1 << page_up_item;
-		ui->state->disabled_item_mask |= 1 << page_down_item;
+	if (ui->state->page_count == 1)
 		ui->state->selected_item = alternate_item;
-	} else {
-		ui->state->disabled_item_mask |= 1 << page_up_item;
+	else
 		ui->state->selected_item = page_down_item;
-	}
 
 	return VB2_REQUEST_UI_CONTINUE;
 }
 
-static vb2_error_t log_page_prev(struct vb2_ui_context *ui,
-				 uint32_t page_up_item,
-				 uint32_t page_down_item)
+static vb2_error_t log_page_prev_action(struct vb2_ui_context *ui)
 {
-	if (ui->state->current_page == 0)
+	if (ui->state->current_page == 0) {
+		VB2_DEBUG("WARNING: Ignore page up on the first page\n");
+		ui->error_beep = 1;
 		return VB2_REQUEST_UI_CONTINUE;
+	}
 	ui->state->current_page--;
 
-	/* Clear bits of page down. */
-	ui->state->disabled_item_mask &= ~(1 << page_down_item);
-
-	if (ui->state->current_page == 0) {
-		ui->state->disabled_item_mask |= 1 << page_up_item;
-		ui->state->selected_item = page_down_item;
-	}
-
 	return VB2_REQUEST_UI_CONTINUE;
 }
 
-static vb2_error_t log_page_next(struct vb2_ui_context *ui,
-				 uint32_t page_up_item,
-				 uint32_t page_down_item)
+static vb2_error_t log_page_next_action(struct vb2_ui_context *ui)
 {
-	if (ui->state->current_page == ui->state->page_count - 1)
-		return VB2_REQUEST_UI_CONTINUE;
-	ui->state->current_page++;
-
-	/* Clear bits of page up. */
-	ui->state->disabled_item_mask &= ~(1 << page_up_item);
-
 	if (ui->state->current_page == ui->state->page_count - 1) {
-		ui->state->disabled_item_mask |= 1 << page_down_item;
-		ui->state->selected_item = page_up_item;
+		VB2_DEBUG("WARNING: Ignore page down on the last page\n");
+		ui->error_beep = 1;
+		return VB2_REQUEST_UI_CONTINUE;
 	}
+	ui->state->current_page++;
 
 	return VB2_REQUEST_UI_CONTINUE;
 }
@@ -258,7 +239,6 @@
 /******************************************************************************/
 /* VB2_SCREEN_DEBUG_INFO */
 
-#define DEBUG_INFO_ITEM_PAGE_UP 1
 #define DEBUG_INFO_ITEM_PAGE_DOWN 2
 #define DEBUG_INFO_ITEM_BACK 3
 
@@ -274,7 +254,6 @@
 	}
 
 	return log_page_init(ui,
-			     DEBUG_INFO_ITEM_PAGE_UP,
 			     DEBUG_INFO_ITEM_PAGE_DOWN,
 			     DEBUG_INFO_ITEM_BACK);
 }
@@ -293,29 +272,15 @@
 	return VB2_REQUEST_UI_CONTINUE;
 }
 
-static vb2_error_t debug_info_page_prev_action(struct vb2_ui_context *ui)
-{
-	return log_page_prev(ui,
-			     DEBUG_INFO_ITEM_PAGE_UP,
-			     DEBUG_INFO_ITEM_PAGE_DOWN);
-}
-
-static vb2_error_t debug_info_page_next_action(struct vb2_ui_context *ui)
-{
-	return log_page_next(ui,
-			     DEBUG_INFO_ITEM_PAGE_UP,
-			     DEBUG_INFO_ITEM_PAGE_DOWN);
-}
-
 static const struct vb2_menu_item debug_info_items[] = {
 	LANGUAGE_SELECT_ITEM,
-	[DEBUG_INFO_ITEM_PAGE_UP] = {
+	{
 		.text = "Page up",
-		.action = debug_info_page_prev_action,
+		.action = log_page_prev_action,
 	},
 	[DEBUG_INFO_ITEM_PAGE_DOWN] = {
 		.text = "Page down",
-		.action = debug_info_page_next_action,
+		.action = log_page_next_action,
 	},
 	[DEBUG_INFO_ITEM_BACK] = BACK_ITEM,
 	POWER_OFF_ITEM,
@@ -332,7 +297,6 @@
 /******************************************************************************/
 /* VB2_SCREEN_FIRMWARE_LOG */
 
-#define FIRMWARE_LOG_ITEM_PAGE_UP 1
 #define FIRMWARE_LOG_ITEM_PAGE_DOWN 2
 #define FIRMWARE_LOG_ITEM_BACK 3
 
@@ -348,7 +312,6 @@
 	}
 
 	return log_page_init(ui,
-			     FIRMWARE_LOG_ITEM_PAGE_UP,
 			     FIRMWARE_LOG_ITEM_PAGE_DOWN,
 			     FIRMWARE_LOG_ITEM_BACK);
 }
@@ -367,29 +330,15 @@
 	return VB2_REQUEST_UI_CONTINUE;
 }
 
-static vb2_error_t firmware_log_page_prev_action(struct vb2_ui_context *ui)
-{
-	return log_page_prev(ui,
-			     FIRMWARE_LOG_ITEM_PAGE_UP,
-			     FIRMWARE_LOG_ITEM_PAGE_DOWN);
-}
-
-static vb2_error_t firmware_log_page_next_action(struct vb2_ui_context *ui)
-{
-	return log_page_next(ui,
-			     FIRMWARE_LOG_ITEM_PAGE_UP,
-			     FIRMWARE_LOG_ITEM_PAGE_DOWN);
-}
-
 static const struct vb2_menu_item firmware_log_items[] = {
 	LANGUAGE_SELECT_ITEM,
-	[FIRMWARE_LOG_ITEM_PAGE_UP] = {
+	{
 		.text = "Page up",
-		.action = firmware_log_page_prev_action,
+		.action = log_page_prev_action,
 	},
 	[FIRMWARE_LOG_ITEM_PAGE_DOWN] = {
 		.text = "Page down",
-		.action = firmware_log_page_next_action,
+		.action = log_page_next_action,
 	},
 	[FIRMWARE_LOG_ITEM_BACK] = BACK_ITEM,
 	POWER_OFF_ITEM,
diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c
index 8d1f2b3..62cf14e 100644
--- a/tests/vb2_ui_tests.c
+++ b/tests/vb2_ui_tests.c
@@ -1115,7 +1115,7 @@
 		"get a one-page debug info");
 	DISPLAYED_PASS();
 	DISPLAYED_EQ("debug info", VB2_SCREEN_DEBUG_INFO,
-		     MOCK_IGNORE, 3, 0x6, 0);
+		     MOCK_IGNORE, 3, 0x0, 0);
 	DISPLAYED_EQ("back to root screen", VB2_SCREEN_RECOVERY_SELECT,
 		     MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
 	DISPLAYED_NO_EXTRA();
@@ -1126,24 +1126,31 @@
 	add_mock_keypress('\t');
 	add_mock_keypress(VB_KEY_ENTER);  /* page 0, select on page down */
 	add_mock_keypress(VB_KEY_ENTER);  /* page 1, select on page down */
+	add_mock_keypress(VB_KEY_UP);	  /* page 2, select on page down */
 	add_mock_keypress(VB_KEY_ENTER);  /* page 2, select on page up */
 	add_mock_keypress(VB_KEY_ENTER);  /* page 1, select on page up */
+	add_mock_keypress(VB_KEY_DOWN);	  /* page 0, select on page up */
 	add_mock_keypress(VB_KEY_ENTER);  /* page 0, select on page down */
-	add_mock_keypress(VB_KEY_DOWN);
+	add_mock_keypress(VB_KEY_DOWN);	  /* page 1, select on page down */
 	add_mock_keypress(VB_KEY_ENTER);  /* page 1, select on back */
+	extend_calls_until_shutdown();
 	TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"get a three-page debug info and navigate");
 	DISPLAYED_PASS();
 	DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO,
-		     MOCK_IGNORE, 2, 0x2, 0);
+		     MOCK_IGNORE, 2, 0x0, 0);
 	DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,
 		     MOCK_IGNORE, 2, 0x0, 1);
 	DISPLAYED_EQ("debug info page #2", VB2_SCREEN_DEBUG_INFO,
-		     MOCK_IGNORE, 1, 0x4, 2);
+		     MOCK_IGNORE, 2, 0x0, 2);
+	DISPLAYED_EQ("debug info page #2", VB2_SCREEN_DEBUG_INFO,
+		     MOCK_IGNORE, 1, 0x0, 2);
 	DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,
 		     MOCK_IGNORE, 1, 0x0, 1);
 	DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO,
-		     MOCK_IGNORE, 2, 0x2, 0);
+		     MOCK_IGNORE, 1, 0x0, 0);
+	DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO,
+		     MOCK_IGNORE, 2, 0x0, 0);
 	DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,
 		     MOCK_IGNORE, 2, 0x0, 1);
 	DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,
