diff --git a/classes/image_types_phosphor.bbclass b/classes/image_types_phosphor.bbclass
index 51259df..565e43c 100644
--- a/classes/image_types_phosphor.bbclass
+++ b/classes/image_types_phosphor.bbclass
@@ -13,38 +13,73 @@
 
 # Phosphor image types
 #
-# Phosphor OpenBMC supports a fixed partition mtd layout.
+# Phosphor OpenBMC supports a fixed partition mtd layout,
+# A dynamic mtd with ubi layout, and a tar file for use with
+# The reference BMC software update implementation.
 
 # Image composition
 FLASH_KERNEL_IMAGE ?= "fitImage-${INITRAMFS_IMAGE}-${MACHINE}.bin"
 IMAGE_BASETYPE ?= "squashfs-xz"
 OVERLAY_BASETYPE ?= "jffs2"
+FLASH_UBI_BASETYPE ?= "${IMAGE_BASETYPE}"
+FLASH_UBI_OVERLAY_BASETYPE ?= "ubifs"
 
-IMAGE_TYPES += "mtd-static mtd-static-alltar mtd-static-tar"
+IMAGE_TYPES += "overlay mtd-static mtd-static-alltar mtd-static-tar mtd-ubi mtd-ubi-tar"
 
+IMAGE_TYPEDEP_overlay = "${IMAGE_BASETYPE}"
 IMAGE_TYPEDEP_mtd-static = "${IMAGE_BASETYPE}"
 IMAGE_TYPEDEP_mtd-static-tar = "${IMAGE_BASETYPE}"
 IMAGE_TYPEDEP_mtd-static-alltar = "mtd-static"
-IMAGE_TYPES_MASKED += "mtd-static mtd-static-alltar mtd-static-tar"
+IMAGE_TYPEDEP_mtd-ubi = "${FLASH_UBI_BASETYPE}"
+IMAGE_TYPEDEP_mtd-ubi-tar = "${FLASH_UBI_BASETYPE}"
+IMAGE_TYPES_MASKED += "overlay mtd-static mtd-static-alltar mtd-static-tar mtd-ubi mtd-ubi-tar"
 
-# Flash characteristics
+# Flash characteristics in KB unless otherwise noted
 FLASH_SIZE ?= "32768"
+FLASH_PEB_SIZE ?= "64"
+# Flash page and overhead sizes in bytes
+FLASH_PAGE_SIZE ?= "1"
+FLASH_NOR_UBI_OVERHEAD ?= "64"
 
 # Fixed partition offsets
 FLASH_UBOOT_OFFSET ?= "0"
 FLASH_KERNEL_OFFSET ?= "512"
+FLASH_UBI_OFFSET ?= "${FLASH_KERNEL_OFFSET}"
 FLASH_ROFS_OFFSET ?= "4864"
 FLASH_RWFS_OFFSET ?= "28672"
 
+# UBI volume sizes in KB unless otherwise noted.
+FLASH_UBI_RWFS_SIZE ?= "4096"
+FLASH_UBI_RWFS_TXT_SIZE ?= "4MiB"
+
+python() {
+    # Compute rwfs LEB count and LEB size.
+    page_size = d.getVar('FLASH_PAGE_SIZE', True)
+    nor_overhead_size = d.getVar('FLASH_NOR_UBI_OVERHEAD', True)
+    overhead_size = max(int(page_size), int(nor_overhead_size))
+    peb_size = d.getVar('FLASH_PEB_SIZE', True)
+    leb_size = (int(peb_size) * 1024) - (2 * overhead_size)
+    d.setVar('FLASH_LEB_SIZE', str(leb_size)) # In bytes
+
+    rwfs_size = d.getVar('FLASH_UBI_RWFS_SIZE', True)
+    rwfs_size = int(rwfs_size) * 1024
+    lebs = int((rwfs_size + leb_size - 1) / leb_size) # Rounding up
+    d.setVar('FLASH_UBI_RWFS_LEBS', str(lebs))
+}
+
 # Allow rwfs mkfs configuration through OVERLAY_MKFS_OPTS and OVERRIDES. However,
 # avoid setting 'ext4' or 'jffs2' in OVERRIDES as such raw filesystem types are
 # reserved for the primary image (and setting them currently breaks the build).
 # Instead, prefix the overlay override value with 'rwfs-' to avoid collisions.
 DISTROOVERRIDES .= ":static-rwfs-${OVERLAY_BASETYPE}"
+DISTROOVERRIDES .= ":ubi-rwfs-${FLASH_UBI_OVERLAY_BASETYPE}"
 
 JFFS2_RWFS_CMD = "mkfs.jffs2 --root=jffs2 --faketime --output=rwfs.jffs2"
+UBIFS_RWFS_CMD = "mkfs.ubifs -r ubifs -c ${FLASH_UBI_RWFS_LEBS} -m ${FLASH_PAGE_SIZE} -e ${FLASH_LEB_SIZE} rwfs.ubifs"
 
 FLASH_STATIC_RWFS_CMD_static-rwfs-jffs2 = "${JFFS2_RWFS_CMD}"
+FLASH_UBI_RWFS_CMD_ubi-rwfs-jffs2 = "${JFFS2_RWFS_CMD}"
+FLASH_UBI_RWFS_CMD_ubi-rwfs-ubifs = "${UBIFS_RWFS_CMD}"
 
 mk_nor_image() {
 	image_dst="$1"
@@ -75,6 +110,70 @@
         mtd-utils-native:do_populate_sysroot \
         "
 
+do_generate_rwfs_ubi() {
+	make_rwfs ${FLASH_UBI_OVERLAY_BASETYPE} "${FLASH_UBI_RWFS_CMD}"
+}
+do_generate_rwfs_ubi[dirs] = " ${S}/ubi"
+do_generate_rwfs_ubi[depends] += " \
+        mtd-utils-native:do_populate_sysroot \
+        "
+
+add_volume() {
+	config_file=$1
+	vol_id=$2
+	vol_type=$3
+	vol_name=$4
+	image=$5
+	vol_size=$6
+
+	echo \[$vol_name\] >> $config_file
+	echo mode=ubi >> $config_file
+	echo image=$image >> $config_file
+	echo vol_type=$vol_type >> $config_file
+	echo vol_name=$vol_name >> $config_file
+	echo vol_id=$vol_id >> $config_file
+	if [ ! -z $vol_size ]; then
+		echo vol_size=$vol_size >> $config_file
+	fi
+}
+
+do_generate_ubi() {
+	cfg=ubinize-${IMAGE_NAME}.cfg
+
+	rm -f $cfg ubi-img
+
+	# Construct the ubinize config file
+	add_volume $cfg 0 static kernel0 \
+		${DEPLOY_DIR_IMAGE}/${FLASH_KERNEL_IMAGE}
+
+	add_volume $cfg 1 static rofs0 \
+		${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${FLASH_UBI_BASETYPE}
+
+	add_volume $cfg 2 dynamic rwfs rwfs.${FLASH_UBI_OVERLAY_BASETYPE} ${FLASH_UBI_RWFS_TXT_SIZE}
+
+	# Build the ubi partition image
+	ubinize -p ${FLASH_PEB_SIZE}KiB -m ${FLASH_PAGE_SIZE} -o ubi-img $cfg
+
+	# Concatenate the uboot and ubi partitions
+	mk_nor_image ${IMGDEPLOYDIR}/${IMAGE_NAME}.ubi.mtd ${FLASH_SIZE}
+	dd bs=1k conv=notrunc seek=${FLASH_UBOOT_OFFSET} \
+		if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
+		of=${IMGDEPLOYDIR}/${IMAGE_NAME}.ubi.mtd
+	dd bs=1k conv=notrunc seek=${FLASH_UBI_OFFSET} \
+		if=ubi-img \
+		of=${IMGDEPLOYDIR}/${IMAGE_NAME}.ubi.mtd
+
+	cd ${IMGDEPLOYDIR}
+	ln -sf ${IMAGE_NAME}.ubi.mtd ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.ubi.mtd
+}
+do_generate_ubi[dirs] = "${S}/ubi"
+do_generate_ubi[depends] += " \
+        ${PN}:do_image_${@d.getVar('FLASH_UBI_BASETYPE', True).replace('-', '_')} \
+        virtual/kernel:do_deploy \
+        u-boot:do_populate_sysroot \
+        mtd-utils-native:do_populate_sysroot \
+        "
+
 do_generate_static() {
 	# Assemble the flash image
 	mk_nor_image ${IMGDEPLOYDIR}/${IMAGE_NAME}.static.mtd ${FLASH_SIZE}
@@ -168,6 +267,17 @@
         "
 do_generate_static_tar[vardepsexclude] = "DATETIME"
 
+do_generate_ubi_tar() {
+	ln -sf ${S}/MANIFEST MANIFEST
+	make_tar_of_images ${FLASH_UBI_OVERLAY_BASETYPE} ${FLASH_UBI_BASETYPE} ubi MANIFEST
+}
+do_generate_ubi_tar[dirs] = " ${S}/ubi"
+do_generate_ubi_tar[depends] += " \
+        ${PN}:do_image_${@d.getVar('FLASH_UBI_BASETYPE', True).replace('-', '_')} \
+        virtual/kernel:do_deploy \
+        u-boot:do_populate_sysroot \
+        "
+
 python do_generate_phosphor_manifest() {
     import configparser
     import io
@@ -193,6 +303,7 @@
 
 addtask generate_phosphor_manifest after do_rootfs
 addtask generate_rwfs_static after do_rootfs
+addtask generate_rwfs_ubi after do_rootfs
 
 python() {
     types = d.getVar('IMAGE_FSTYPES', True).split()
@@ -212,4 +323,15 @@
                 'do_generate_static_tar',
                 'do_image_complete',
                 'do_generate_rwfs_static', d)
+
+    if 'mtd-ubi' in types:
+        bb.build.addtask(
+                'do_generate_ubi',
+                'do_image_complete',
+                'do_generate_rwfs_ubi', d)
+    if 'mtd-ubi-tar' in types:
+        bb.build.addtask(
+                'do_generate_ubi_tar',
+                'do_image_complete',
+                'do_generate_rwfs_ubi do_generate_phosphor_manifest', d)
 }
