diff --git a/UPGRADES.md b/UPGRADES.md
index b50e44b..adeb082 100644
--- a/UPGRADES.md
+++ b/UPGRADES.md
@@ -10,6 +10,7 @@
 
 - Change the winesapOS stable repository to be the winesapOS rolling updates repository.
 - Change 'asusctl-git' package to use the 'asusctl' package instead.
+- Change 'linux-firmware' to use the new upstream meta package.
 
 ## 4.2.0 to 4.3.0
 
diff --git a/scripts/winesapos-install.sh b/scripts/winesapos-install.sh
index 2654591..13b14c4 100755
--- a/scripts/winesapos-install.sh
+++ b/scripts/winesapos-install.sh
@@ -667,7 +667,7 @@ SigLevel = Never" >> "${WINESAPOS_INSTALL_DIR}"/etc/pacman.conf
     # Install all available Linux firmware packages from the official Arch Linux repositories.
     pacman_install_chroot \
       linux-firmware \
-      linux-firmware-bnx2x \
+      linux-firmware-broadcom \
       linux-firmware-liquidio \
       linux-firmware-marvell \
       linux-firmware-mellanox \
diff --git a/scripts/winesapos-tests.sh b/scripts/winesapos-tests.sh
index 2cf9ee8..8bd801c 100755
--- a/scripts/winesapos-tests.sh
+++ b/scripts/winesapos-tests.sh
@@ -336,9 +336,9 @@ fi
 if [[ "${WINESAPOS_BUILD_CHROOT_ONLY}" == "false" ]]; then
     printf "\tChecking that the Linux kernel packages are installed..."
     if [[ "${WINESAPOS_DISTRO_DETECTED}" == "manjaro" ]]; then
-        pacman_search_loop linux-fsync-nobara-bin linux612 linux612-headers linux-firmware mkinitcpio-firmware amd-ucode intel-ucode apple-bcm-firmware
+        pacman_search_loop linux-fsync-nobara-bin linux612 linux612-headers linux-firmware linux-firmware-broadcom mkinitcpio-firmware amd-ucode intel-ucode apple-bcm-firmware
     elif [[ "${WINESAPOS_DISTRO}" == "arch" ]]; then
-        pacman_search_loop linux-fsync-nobara-bin linux-lts linux-lts-headers linux-firmware mkinitcpio-firmware amd-ucode intel-ucode apple-bcm-firmware
+        pacman_search_loop linux-fsync-nobara-bin linux-lts linux-lts-headers linux-firmware linux-firmware-broadcom mkinitcpio-firmware amd-ucode intel-ucode apple-bcm-firmware
     fi
 fi
 
diff --git a/scripts/winesapos-upgrade.sh b/scripts/winesapos-upgrade.sh
index 7103652..2001551 100755
--- a/scripts/winesapos-upgrade.sh
+++ b/scripts/winesapos-upgrade.sh
@@ -1100,12 +1100,22 @@ sudo -E -u "${WINESAPOS_USER_NAME}" "${qdbus_cmd}" "${kdialog_dbus}" /ProgressDi
 echo "Running 4.2.0 to 4.3.0 upgrades complete."
 
 echo "Running 4.3.0 to 4.4.0 upgrades..."
-kdialog_dbus=$(sudo -E -u "${WINESAPOS_USER_NAME}" kdialog --title "winesapOS Upgrade" --progressbar "Running 4.2.0 to 4.3.0 upgrades..." 1 | cut -d" " -f1)
+kdialog_dbus=$(sudo -E -u "${WINESAPOS_USER_NAME}" kdialog --title "winesapOS Upgrade" --progressbar "Running 4.2.0 to 4.3.0 upgrades..." 2 | cut -d" " -f1)
 
 if ${CMD_PACMAN} -Q asusctl-git; then
     "${CMD_PACMAN_REMOVE[@]}" asusctl-git
     "${CMD_AUR_INSTALL[@]}" asusctl
 fi
+sudo -E -u "${WINESAPOS_USER_NAME}" "${qdbus_cmd}" "${kdialog_dbus}" /ProgressDialog Set org.kde.kdialog.ProgressDialog value 1
+
+# The "linux-firmware-broadcom" package replaced "linux-firmware-bnx2x" during the "linux-firmware" meta package refactor.
+# Checking for that change allows us to fix this upstream issue:
+# https://archlinux.org/news/linux-firmware-2025061312fe085f-5-upgrade-requires-manual-intervention/
+if ! ${CMD_PACMAN} -Q linux-firmware-broadcom; then
+    # Remove this package without dependencies before re-installing.
+    ${CMD_PACMAN} -R -d -d linux-firmware linux-firmware-bnx2x
+    "${CMD_PACMAN_INSTALL[@]}" linux-firmware linux-firmware-broadcom
+fi
 
 sudo -E -u "${WINESAPOS_USER_NAME}" "${qdbus_cmd}" "${kdialog_dbus}" /ProgressDialog org.kde.kdialog.ProgressDialog.close
 echo "Running 4.3.0 to 4.4.0 upgrades complete."