diff --git a/net-wireless/portapack-mayhem/Manifest b/net-wireless/portapack-mayhem/Manifest
index aa0f210a4..e6a995a06 100644
--- a/net-wireless/portapack-mayhem/Manifest
+++ b/net-wireless/portapack-mayhem/Manifest
@@ -1,3 +1,5 @@
-DIST mayhem_v2.0.1_COPY_TO_SDCARD.zip 516700350 BLAKE2B 2fb3d59e80e7f7086f37b9a52b084e7c4796c9e7f31cdcc5e9421010a505d9c4639b58ce143d89cd215ef4004406c120d403922cb3b596c0e75671337e5b4ca4 SHA512 e16d80b1a27b492d251379965972c1764dad37f51330fdd6d15cefd01a16d0b8a3d7fabdd3597195b519d4f006829b7fc6aad58bea700bdb902a506c2e834741
-DIST mayhem_v2.0.1_FIRMWARE.zip 4578522 BLAKE2B 8585dc4490826097cefe37c909bfc27a3b5f217574c70dd9cb9f7a64a10ac2042f6d1619cc2b8aaf01c2f527bdba40d7f79d0754a315bb8be2acd3622514ffdb SHA512 021821a54c3c354461e1f52f89c1e0e8f9b1f8dc643db6c7800d5a0089f10e01489dff1f257e74929137052dfcac4a4b8541c482c7c9fd654555d1206e6d40c2
-DIST portapack-mayhem-2.0.1.tar.gz 199393201 BLAKE2B 1e724305fcdfc4f4bf0bd5244cb866eddf224746a91ca5648e168df52bf24f57f2061aedfec7b8515e2da823561f2711d4d5bdb3ad660a677bff8e3037cbf92a SHA512 246a7539fa73c509d02b64e6068b6c144e891a3900cc6bb9836fd2966020a55626e5f2f174f85e27bf7dbcb2a492d560d2738d70eb140d06fa8b910b5679ccc0
+DIST COPY_TO_SDCARD_hackrf_mayhem_v2.4.0.zip 572887610 BLAKE2B d8054f9ef43ef50645f7fe17dafd0c4396b2d591372ffc2744d1747a068362f192fb1c6f44261f637c9b063d3af09800bbee8184c2de86adffd7ef6973c87dc6 SHA512 1361f09828799b8cbe33ed036bae5cb9940ba0987284c29672b694b08b27f826993e2cd836db56e4cb5f9695c5a93a8b57f1c394418c9e3e2853889c8f8f1648
+DIST COPY_TO_SDCARD_hpro_mayhem_v2.4.0.zip 573312649 BLAKE2B 629cb5e74e9b56f9c360c743c33f26e9b1c763f177a7e3f017835dc4650365f9a4f8e7c4fd7d48005bfb290e6b03e8fa1d0f7bc4070875045ae01cce5b925e47 SHA512 7cdfb8b00a5c75d88591bc2712b1deb0def40b6f25fa9840d38a941dbf4d994527d41eda64519e19737543fa83b1a6d5503ac37c7f89e17f226fcc1fc4a05430
+DIST COPY_TO_SDCARD_portarf_mayhem_v2.4.0.zip 572891055 BLAKE2B 2c10e0f7ee7530fe91dd69c0d4cb4f3ffd10748659a9954e8ac2d650acf94baabae97566e6415cf25634763be273078a794cbf27496dd3e681ee5c348505f72d SHA512 ff6df5a2f4902c6b1e40ae0ba161f8ce643b70bf9956d6a076684e95eecb531e712f6a0e33aa7b22e2aa3f65e712c7f94dad1ffbc4a6c303b02a25f91f8e275a
+DIST portapack-mayhem-2.4.0-firmware.zip 8434462 BLAKE2B ea98174e719fe4bd4b67b566b19497f426c76740f7a3e9dff33da6d3626f4bac491494ff0c32e86c3ce00b0851daeadda5f9560f40665e4e181656f3d991871a SHA512 6110d628089b60f31d132111e9c2680d06f52d3f8e9748b56a758785098017b023dd20864bb90e6e479e0de192ff1f8f907ea312a736d9453112d2d25a63f14c
+DIST portapack-mayhem-2.4.0.tar.gz 259366620 BLAKE2B db28bb70de89bba976188f1138ccaa994a8f00650a5077cbf597980ef40f1497ef6a1da1365f895756ae92089864081327e6176297e0bf5ef33a841b04839a9e SHA512 d0df7c47f0018822181e2e3ac05d131f2daa4bfd312b38ac96c7a808d9618040d5c05fbe18c7f04d779d61983a63f42de4762537b658eba1daa575c32df65296
diff --git a/net-wireless/portapack-mayhem/metadata.xml b/net-wireless/portapack-mayhem/metadata.xml
index 161595b0d..66cacdadd 100644
--- a/net-wireless/portapack-mayhem/metadata.xml
+++ b/net-wireless/portapack-mayhem/metadata.xml
@@ -6,7 +6,9 @@
Rick Farina
eried/portapack-mayhem
diff --git a/net-wireless/portapack-mayhem/portapack-mayhem-2.0.1-r1.ebuild b/net-wireless/portapack-mayhem/portapack-mayhem-2.0.1-r1.ebuild
deleted file mode 100644
index 1e51bf66a..000000000
--- a/net-wireless/portapack-mayhem/portapack-mayhem-2.0.1-r1.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright 1999-2024 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-PYTHON_COMPAT=( python3_{12..14} )
-
-DESCRIPTION="Custom firmware for the HackRF SDR + PortaPack H1 addon"
-HOMEPAGE="https://github.com/portapack-mayhem/mayhem-firmware"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="sdcard-files"
-
-if [ "${PV}" == "9999" ]; then
- inherit cmake flag-o-matic git-r3 python-any-r1
- EGIT_REPO_URI="https://github.com/portapack-mayhem/mayhem-firmware.git"
- EGIT_BRANCH="next"
- BDEPEND="${PYTHON_DEPS}
- sys-devel/gcc-arm-none-eabi
- $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')"
-else
- inherit python-utils-r1
- KEYWORDS="~amd64 ~x86"
- SRC_URI="https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/mayhem_v${PV}_FIRMWARE.zip
- https://github.com/portapack-mayhem/mayhem-firmware/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
- sdcard-files? \
- ( https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/mayhem_v${PV}_COPY_TO_SDCARD.zip )"
- BDEPEND="app-arch/unzip"
-fi
-
-BDEPEND="net-wireless/gnuradio"
-DEPEND="${PYTHON_DEPS}
- app-arch/unzip
-"
-RDEPEND="
- >=net-wireless/hackrf-tools-2015.07.2-r1
- >=app-mobilephone/dfu-util-0.7
-"
-
-python_check_deps() {
- python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]"
-}
-
-src_unpack() {
- if [ "${PV}" = 9999 ]; then
- git-r3_src_unpack
- else
- #upstream distfiles unpack into current directory
- unpack "${P}.tar.gz" || die
- mv "mayhem-firmware-${PV}" "${P}"
- pushd "${P}" || die
- unpack "mayhem_v${PV}_FIRMWARE.zip" || die
- if use sdcard-files; then
- pushd sdcard || die
- unpack "mayhem_v${PV}_COPY_TO_SDCARD.zip" || die
- fi
- fi
-}
-
-src_configure() {
- if [ "${PV}" = "9999" ]; then
- strip-flags
- filter-flags "-march=*" "-mtune=*"
- cmake_src_configure
- else
- true
- fi
-}
-
-src_compile() {
- if [ "${PV}" = "9999" ]; then
- V=1 cmake_src_compile
- else
- true
- fi
- pushd "firmware/tools" || die
- grcc -o "${S}" convert_C16_to_complex.grc || die
-}
-
-src_install() {
- exeinto /usr/share/${PN}
- doexe firmware/tools/*.py firmware/tools/*.grc
- newexe top_block.py convert_C16_to_complex.py
- insinto /usr/share/${PN}
- if [ "${PV}" = "9999" ]; then
- newins "${BUILD_DIR}/firmware/portapack-h1_h2-mayhem.bin" "portapack-h1_h2-mayhem-${PV}.bin"
- else
- newins "${S}/portapack-h1_h2-mayhem.bin" "portapack-h1_h2-mayhem-${PV}.bin"
- fi
- use sdcard-files && doins -r "${S}"/sdcard
- dodir /usr/share/hackrf
- ln -s ../${PN}/portapack-h1_h2-mayhem-${PV}.bin "${ED}/usr/share/hackrf/portapack-h1_h2-mayhem.bin" || die
-}
-
-pkg_postint() {
- if ! use sdcard-files; then
- ewarn "sdcard-files use flag is not enabled but these files are *required* for operation"
- ewarn "it is a good idea to copy these files on the sdcard on your portapack from time to time"
- fi
-}
diff --git a/net-wireless/portapack-mayhem/portapack-mayhem-2.4.0.ebuild b/net-wireless/portapack-mayhem/portapack-mayhem-2.4.0.ebuild
new file mode 100644
index 000000000..2b0a39b06
--- /dev/null
+++ b/net-wireless/portapack-mayhem/portapack-mayhem-2.4.0.ebuild
@@ -0,0 +1,132 @@
+# Copyright 1999-2026 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{12..14} )
+
+DESCRIPTION="Custom firmware for the HackRF SDR + PortaPack H1 addon"
+HOMEPAGE="https://github.com/portapack-mayhem/mayhem-firmware"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="hackrf-sdcard hackrfpro-sdcard portarf-sdcard"
+
+if [ "${PV}" == "9999" ]; then
+ inherit cmake flag-o-matic git-r3 python-any-r1
+ EGIT_REPO_URI="https://github.com/portapack-mayhem/mayhem-firmware.git"
+ EGIT_BRANCH="next"
+ BDEPEND="${PYTHON_DEPS}
+ sys-devel/gcc-arm-none-eabi
+ $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')"
+else
+ inherit python-utils-r1
+ KEYWORDS="~amd64 ~x86"
+ # https://github.com/portapack-mayhem/mayhem-firmware/issues/3108
+ # https://github.com/portapack-mayhem/mayhem-firmware/issues/3109
+ SRC_URI="https://github.com/portapack-mayhem/mayhem-firmware/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/FIRMWARE_mayhem_v${PV}.zip -> ${P}-firmware.zip
+ hackrf-sdcard? \
+ ( https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/COPY_TO_SDCARD_hackrf_mayhem_v${PV}.zip )
+ hackrfpro-sdcard? \
+ ( https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/COPY_TO_SDCARD_hpro_mayhem_v${PV}.zip )
+ portarf-sdcard? \
+ ( https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/COPY_TO_SDCARD_portarf_mayhem_v2.4.0.zip )"
+ BDEPEND="app-arch/unzip"
+fi
+
+BDEPEND="net-wireless/gnuradio"
+DEPEND="${PYTHON_DEPS}
+ app-arch/unzip
+"
+RDEPEND="
+ >=net-wireless/hackrf-tools-2015.07.2-r1
+ >=app-mobilephone/dfu-util-0.7
+"
+
+python_check_deps() {
+ python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]"
+}
+
+src_unpack() {
+ if [ "${PV}" = 9999 ]; then
+ git-r3_src_unpack
+ else
+ unpack "${P}.tar.gz" || die
+ mv "mayhem-firmware-${PV}" "${P}"
+ pushd "${S}" || die
+ unpack "${P}-firmware.zip" || die
+ #popd || die
+ if use hackrf-sdcard; then
+ mkdir hackrf-sdcard || die
+ pushd hackrf-sdcard || die
+ unpack "COPY_TO_SDCARD_hackrf_mayhem_v${PV}.zip" || die
+ popd || die
+ fi
+ if use hackrfpro-sdcard; then
+ mkdir hackrfpro-sdcard || die
+ pushd hackrfpro-sdcard || die
+ unpack "COPY_TO_SDCARD_hpro_mayhem_v${PV}.zip" || die
+ popd || die
+ fi
+ if use portarf-sdcard; then
+ mkdir portarf-sdcard || die
+ pushd portarf-sdcard || die
+ unpack "COPY_TO_SDCARD_portarf_mayhem_v${PV}.zip" || die
+ popd || die
+ fi
+ fi
+}
+
+src_configure() {
+ if [ "${PV}" = "9999" ]; then
+ strip-flags
+ filter-flags "-march=*" "-mtune=*"
+ cmake_src_configure
+ else
+ true
+ fi
+}
+
+src_compile() {
+ if [ "${PV}" = "9999" ]; then
+ V=1 cmake_src_compile
+ else
+ true
+ fi
+ pushd "firmware/tools" || die
+ grcc -o "${S}" convert_C16_to_complex.grc || die
+}
+
+src_install() {
+ exeinto /usr/share/${PN}
+ doexe firmware/tools/*.py firmware/tools/*.grc
+ newexe top_block.py convert_C16_to_complex.py
+ insinto /usr/share/${PN}
+ if [ "${PV}" = "9999" ]; then
+ newins "${BUILD_DIR}/firmware/portapack-h1_h2-mayhem.bin" "portapack-h1_h2-mayhem-${PV}.bin"
+ else
+ # firmware_hackrf.bin firmware_hpro.bin firmware_portarf.bin
+ newins "${S}/firmware/firmware_hackrf.bin" "portapack-mayhem-hackrf-${PV}.bin"
+ newins "${S}/firmware/firmware_hpro.bin" "portapack-mayhem-hackrfpro-${PV}.bin"
+ newins "${S}/firmware/firmware_portarf.bin" "portapack-mayhem-portarf-${PV}.bin"
+ fi
+ use hackrf-sdcard && doins -r "${S}"/hackrf-sdcard
+ use hackrfpro-sdcard && doins -r "${S}"/hackrfpro-sdcard
+ use portarf-sdcard && doins -r "${S}"/portarf-sdcard
+ dodir /usr/share/hackrf
+ ln -s ../${PN}/portapack-mayhem-hackrf-${PV}.bin "${ED}/usr/share/hackrf/portapack-mayhem-hackrf.bin" || die
+ ln -s ../${PN}/portapack-mayhem-hackrfpro-${PV}.bin "${ED}/usr/share/hackrf/portapack-mayhem-hackrfpro.bin" || die
+ ln -s ../${PN}/portapack-mayhem-portarf-${PV}.bin "${ED}/usr/share/hackrf/portapack-mayhem-portarf.bin" || die
+}
+
+pkg_postint() {
+ if ! use hackrf-sdcard ; then
+ ewarn "hackrf-sdcard use flag is not enabled but these files are *required* for operation with hackrf"
+ fi
+ if ! use hackrfpro-sdcard ; then
+ ewarn "hackrfpro-sdcard use flag is not enabled but these files are *required* for operation with hackrf pro"
+ fi
+ if ! use portarf-sdcard ; then
+ ewarn "portarf-sdcard use flag is not enabled but these files are *required* for operation with portarf"
+ fi
+}
diff --git a/net-wireless/portapack-mayhem/portapack-mayhem-9999.ebuild b/net-wireless/portapack-mayhem/portapack-mayhem-9999.ebuild
deleted file mode 100644
index 1e51bf66a..000000000
--- a/net-wireless/portapack-mayhem/portapack-mayhem-9999.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright 1999-2024 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-PYTHON_COMPAT=( python3_{12..14} )
-
-DESCRIPTION="Custom firmware for the HackRF SDR + PortaPack H1 addon"
-HOMEPAGE="https://github.com/portapack-mayhem/mayhem-firmware"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="sdcard-files"
-
-if [ "${PV}" == "9999" ]; then
- inherit cmake flag-o-matic git-r3 python-any-r1
- EGIT_REPO_URI="https://github.com/portapack-mayhem/mayhem-firmware.git"
- EGIT_BRANCH="next"
- BDEPEND="${PYTHON_DEPS}
- sys-devel/gcc-arm-none-eabi
- $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')"
-else
- inherit python-utils-r1
- KEYWORDS="~amd64 ~x86"
- SRC_URI="https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/mayhem_v${PV}_FIRMWARE.zip
- https://github.com/portapack-mayhem/mayhem-firmware/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
- sdcard-files? \
- ( https://github.com/${PN}/mayhem-firmware/releases/download/v${PV}/mayhem_v${PV}_COPY_TO_SDCARD.zip )"
- BDEPEND="app-arch/unzip"
-fi
-
-BDEPEND="net-wireless/gnuradio"
-DEPEND="${PYTHON_DEPS}
- app-arch/unzip
-"
-RDEPEND="
- >=net-wireless/hackrf-tools-2015.07.2-r1
- >=app-mobilephone/dfu-util-0.7
-"
-
-python_check_deps() {
- python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]"
-}
-
-src_unpack() {
- if [ "${PV}" = 9999 ]; then
- git-r3_src_unpack
- else
- #upstream distfiles unpack into current directory
- unpack "${P}.tar.gz" || die
- mv "mayhem-firmware-${PV}" "${P}"
- pushd "${P}" || die
- unpack "mayhem_v${PV}_FIRMWARE.zip" || die
- if use sdcard-files; then
- pushd sdcard || die
- unpack "mayhem_v${PV}_COPY_TO_SDCARD.zip" || die
- fi
- fi
-}
-
-src_configure() {
- if [ "${PV}" = "9999" ]; then
- strip-flags
- filter-flags "-march=*" "-mtune=*"
- cmake_src_configure
- else
- true
- fi
-}
-
-src_compile() {
- if [ "${PV}" = "9999" ]; then
- V=1 cmake_src_compile
- else
- true
- fi
- pushd "firmware/tools" || die
- grcc -o "${S}" convert_C16_to_complex.grc || die
-}
-
-src_install() {
- exeinto /usr/share/${PN}
- doexe firmware/tools/*.py firmware/tools/*.grc
- newexe top_block.py convert_C16_to_complex.py
- insinto /usr/share/${PN}
- if [ "${PV}" = "9999" ]; then
- newins "${BUILD_DIR}/firmware/portapack-h1_h2-mayhem.bin" "portapack-h1_h2-mayhem-${PV}.bin"
- else
- newins "${S}/portapack-h1_h2-mayhem.bin" "portapack-h1_h2-mayhem-${PV}.bin"
- fi
- use sdcard-files && doins -r "${S}"/sdcard
- dodir /usr/share/hackrf
- ln -s ../${PN}/portapack-h1_h2-mayhem-${PV}.bin "${ED}/usr/share/hackrf/portapack-h1_h2-mayhem.bin" || die
-}
-
-pkg_postint() {
- if ! use sdcard-files; then
- ewarn "sdcard-files use flag is not enabled but these files are *required* for operation"
- ewarn "it is a good idea to copy these files on the sdcard on your portapack from time to time"
- fi
-}
diff --git a/profiles/pentoo/base/package.mask b/profiles/pentoo/base/package.mask
index 73a960c24..d59919fb0 100644
--- a/profiles/pentoo/base/package.mask
+++ b/profiles/pentoo/base/package.mask
@@ -72,3 +72,6 @@ sci-libs/mkl
# force ffmpeg update