diff --git a/meta-arm/recipes-devtools/fvp/fvp-base-a-aem_11.29.27.bb b/meta-arm/recipes-devtools/fvp/fvp-base-a-aem_11.31.28.bb
similarity index 58%
rename from meta-arm/recipes-devtools/fvp/fvp-base-a-aem_11.29.27.bb
rename to meta-arm/recipes-devtools/fvp/fvp-base-a-aem_11.31.28.bb
index a45fa153a171..1ef4a59cfb74 100644
--- a/meta-arm/recipes-devtools/fvp/fvp-base-a-aem_11.29.27.bb
+++ b/meta-arm/recipes-devtools/fvp/fvp-base-a-aem_11.31.28.bb
@@ -4,15 +4,17 @@ LICENSE:append = " & Artistic-2.0 & BSL-1.0 & BSD-2-Clause & Unlicense"
 
 SUMMARY = "Arm Fixed Virtual Platform - Armv-A Base RevC Architecture Envelope Model FVP"
 LIC_FILES_CHKSUM = "file://license_terms/license_agreement.txt;md5=1a33828e132ba71861c11688dbb0bd16 \
-                    file://license_terms/third_party_licenses/third_party_licenses.txt;md5=92ea58bb219213dfdc48111b693019b6 \
-                    file://license_terms/third_party_licenses/arm_license_management_utilities/third_party_licenses.txt;md5=abcaafefc7b7a0cdf6664c51f9075c5b"
+                    file://license_terms/third_party_licenses/third_party_licenses.txt;md5=5e3a194978d88188b5a0eebd263f2ca8 \
+                    file://license_terms/third_party_licenses/arm_license_management_utilities/third_party_licenses.txt;md5=4f61d2f0d834d5c29d53d828572fb6fc"
 
-SRC_URI[fvp-aarch64.sha256sum] = "8fce0dc6346c37b0df4809d08b599463c880b6375f9b58d89a73fa6f9ab2e129"
-SRC_URI[fvp-x86_64.sha256sum] = "8a8c4a609c32890ce96799aa7319fff3ecf752c7a9dab52b2e968cb80cc1836f"
+SRC_URI[fvp-aarch64.sha256sum] = "38cfb5244fe898bed5c3ba46ec6e3654638e29085ef597b9ed92f36be08adf1d"
+SRC_URI[fvp-x86_64.sha256sum] = "527920d1873472de045c844fa6f5b8679511ad4f9996058eb9e075b0f0eada10"
 
 # The CSS used in the FVP homepage make it too difficult to query with the tooling currently in Yocto
 UPSTREAM_VERSION_UNKNOWN = "1"
 
-MODEL_CODE = "FVP_Base_RevC-2xAEMvA"
+MODEL_CODE = "FVP_Base_RevC_AEMvA"
 
 COMPATIBLE_HOST = "(aarch64|x86_64).*-linux"
+
+INSANE_SKIP:${PN} = "dev-so"
diff --git a/meta-arm/recipes-devtools/fvp/fvp-envelope.inc b/meta-arm/recipes-devtools/fvp/fvp-envelope.inc
index a52691ebc505..a6a618edb4ea 100644
--- a/meta-arm/recipes-devtools/fvp/fvp-envelope.inc
+++ b/meta-arm/recipes-devtools/fvp/fvp-envelope.inc
@@ -2,15 +2,37 @@ require fvp-common.inc
 
 HOMEPAGE = "https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms/Arm%20Architecture%20FVPs"
 
-SRC_URI = "https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/${PV_URL_SHORT}/${MODEL_CODE}_${PV_URL}_${FVP_ARCH}.tgz;subdir=${BP};name=fvp-${HOST_ARCH}"
+SRC_URI = "https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/${PV_URL_SHORT}/${MODEL_CODE}_${PV_URL}_${FVP_ARCH}.tar.gz;subdir=${BP};name=fvp-${HOST_ARCH}"
 
 UPSTREAM_CHECK_URI = "${HOMEPAGE}"
-UPSTREAM_CHECK_REGEX = "${MODEL_CODE}_(?P<pver>(\d+[\.\-_]*)+).tgz"
+UPSTREAM_CHECK_REGEX = "${MODEL_CODE}_(?P<pver>(\d+[\.\-_]*)+).tar.gz"
 
+FVP_ARCH:aarch64 = "Linux_armv8"
+FVP_ARCH:x86-64 = "Linux_x86"
+
+# This is needed because all of the files are now included in the first
+# dir in the tarball, instead of having the license files split out.
+S = "${UNPACKDIR}/${BP}/${MODEL_CODE}_${VERSION}_${BUILD}"
+
+# Keeping this separate from do_install below in case it can be moved
+# out when other FVPs bump to newer versions and this because needed more commonly
+fvp_link_binaries() {
+    DIR="${D}${FVPDIR}/bin/"
+
+    stat $DIR/FVP_* >/dev/null 2>&1 || bbfatal Cannot find FVP binaries in $DIR
+
+    for FVP in $DIR/FVP_*; do
+        ln -rs $FVP ${D}${bindir}/$(basename $FVP)
+    done
+    # But not the .so files too
+    rm -f ${D}${bindir}/*.so
+}
+
+# This is needed because the FVP Base doesn't have an install script like others
 do_install() {
     mkdir --parents ${D}${FVPDIR} ${D}${bindir}
 
-    cp --archive --no-preserve=ownership ${S}/*_pkg/* ${D}${FVPDIR}/
+    cp --archive --no-preserve=ownership ${S}/* ${D}${FVPDIR}/
 
     fvp_link_binaries
 }
