diff --git a/airoha/image/iopsys-image-common.mk b/airoha/image/iopsys-image-common.mk
index f04e4ab26c35a7c993d6a992bb82ef43b9e39193..f76e072c61c8e2bd70712687f9b7680c34164dde 100644
--- a/airoha/image/iopsys-image-common.mk
+++ b/airoha/image/iopsys-image-common.mk
@@ -16,6 +16,7 @@ define Build/iopsys-fit-upgrade-image
 			gpt-primary-header $(dir $@)/$(DEVICE_IMG_PREFIX)-gpt.img.start \
 			gpt-primary-entry $(dir $@)/$(DEVICE_IMG_PREFIX)-gpt.img.entry \
 			gpt-alternate $(dir $@)/$(DEVICE_IMG_PREFIX)-gpt.img.end) \
+			u-boot-script $(CURDIR)/u-boot-script \
 	)
 	$(call iopsys-fit-upgrade-image-add-configs-same, $@.its, \
 		compat_versions:"1 0", \
@@ -25,6 +26,7 @@ define Build/iopsys-fit-upgrade-image
 			boot \
 			rootfs \
 			u-boot-env \
+			u-boot-script \
 			$(if $(GPT_PRIMARY_ENTRY_OFFSET), \
 				gpt-primary-header \
 				gpt-primary-entry \
@@ -33,6 +35,7 @@ define Build/iopsys-fit-upgrade-image
 				gpt-alternate-offset:$(GPT_ALTERNATE_OFFSET)) \
 			$(if $(CONFIG_TARGET_UPGRADE_BUNDLE),upgrade_bundle) \
 	)
+	$(if $(GPT_PRIMARY_ENTRY_OFFSET), $(call add_fit_sub_image_script_type, $@))
 	$(call iopsys-fit-upgrade-image-build, $@)
 endef
 
@@ -40,6 +43,17 @@ define Build/generate_gpt_entries
 	ptgen -a100 -v -g -b -o $(dir $@)/$(DEVICE_IMG_PREFIX)-gpt.img $(GPT_LAYOUT_STR)
 endef
 
+# Add type property to sub-image u-boot script
+define add_fit_sub_image_script_type
+	echo -e '/ { \n\
+	    images {\n\
+	        u-boot-script {\n\
+	            type = "script";\n\
+	        };\n\
+	    };\n\
+	};' >> $(1).its
+endef
+
 # Generate U-Boot RAM image
 define generate-uboot-ram
 	@echo Generate fit-dtb image for $(DEVICE_NAME)
diff --git a/airoha/image/u-boot-script b/airoha/image/u-boot-script
new file mode 100644
index 0000000000000000000000000000000000000000..f42ff39593eb477276f16d5344d0055e4dbe608d
--- /dev/null
+++ b/airoha/image/u-boot-script
@@ -0,0 +1 @@
+echo "Hello world!"