diff --git a/airoha/image/u-boot-script b/airoha/image/u-boot-script
index c412b11755835b049627d1251f5cace31806b1c2..81b147bbf89ed5dc8cd726aee3e897ab2f645aa6 100644
--- a/airoha/image/u-boot-script
+++ b/airoha/image/u-boot-script
@@ -36,8 +36,38 @@ setenv __script_emmc_write_gpt '
 	env delete gpt_entry_start gpt_alt_start fileaddr filesize tmp;
 	run do_report_result;
 ';
+setenv __script_emmc_clear_part '
+	test $? -eq 0 && part size mmc 0 ${part_name} part_size;
+	test $? -eq 0 && setexpr mw_size ${part_size} * 0x80;
+	test $? -eq 0 && mw.l ${loadaddr} 0 ${mw_size};
+	test $? -eq 0 && write mmc 0#${part_name} ${loadaddr} 0 ${part_size};
+	env set result $?;
+	echo;
+	echo -n "Clear partition ${part_name} -- ";
+	env delete part_name part_size mw_size;
+	run do_report_result;
+';
+# This command by design should delete all environment variables added by
+# this script during its sourcing. All variables, including this one...
+setenv __script_cleanup_env '
+	echo Cleanup...;
+	env delete __script_get_sysupgrade_cfg_name __script_emmc_write_gpt __script_emmc_clear_part;
+	env delete __script_emmc_write_sysupgrade __script_emmc_write_production;
+	env delete __script_cleanup_env;
+';
+# Used by u-boot 'update_itb_force_all_emmc' command
+setenv __script_emmc_write_sysupgrade '
+	run __script_emmc_write_gpt update_itb_prepare do_update_bank2 do_update_bank1 do_update_uboot_img do_update_uboot_env clear_overlay2 clear_overlay1;
+	test $? -eq 0 && run __script_cleanup_env;
+	test $? -eq 0 && run update_itb_reset_active_image;
+';
+# Used by production image. This command can't "run __script_emmc_write_sysupgrade"
+# because __script_cleanup_env by design should remove all script variables (including
+# __script_emmc_clear_part one).
 setenv __script_emmc_write_production '
 	run __script_emmc_write_gpt update_itb_prepare do_update_bank2 do_update_bank1 do_update_uboot_img do_update_uboot_env clear_overlay2 clear_overlay1;
-	test $? -eq 0 && env delete __script_get_sysupgrade_cfg_name __script_emmc_write_gpt __script_emmc_write_production;
+	test $? -eq 0 && setenv part_name art && run __script_emmc_clear_part;
+	test $? -eq 0 && setenv part_name boarddata && run __script_emmc_clear_part;
+	test $? -eq 0 && run __script_cleanup_env;
 	test $? -eq 0 && run update_itb_reset_active_image;
 ';