diff options
author | Rick Farina <zerochaos@gentoo.org> | 2019-01-08 17:17:48 -0500 |
---|---|---|
committer | Rick Farina <zerochaos@gentoo.org> | 2019-01-08 17:19:29 -0500 |
commit | deed2865465552e9d6e3233470a89bbc2ffc9e73 (patch) | |
tree | 5c5164778cc058021db0ed81b69c63f85bc74830 /net-wireless/hackrf-tools | |
parent | sys-fs/udev-239: arm64 stable (bug #673006) (diff) | |
download | gentoo-deed2865465552e9d6e3233470a89bbc2ffc9e73.tar.gz gentoo-deed2865465552e9d6e3233470a89bbc2ffc9e73.tar.bz2 gentoo-deed2865465552e9d6e3233470a89bbc2ffc9e73.zip |
net-wireless/hackrf-tools: add hackrf_easy_flash
helper script for updating firmware/cpld and switching firmware
Package-Manager: Portage-2.3.54, Repoman-2.3.12
Signed-off-by: Rick Farina <zerochaos@gentoo.org>
Diffstat (limited to 'net-wireless/hackrf-tools')
-rwxr-xr-x | net-wireless/hackrf-tools/files/hackrf_easy_flash | 161 | ||||
-rw-r--r-- | net-wireless/hackrf-tools/hackrf-tools-2018.01.1-r1.ebuild (renamed from net-wireless/hackrf-tools/hackrf-tools-2018.01.1.ebuild) | 4 |
2 files changed, 164 insertions, 1 deletions
diff --git a/net-wireless/hackrf-tools/files/hackrf_easy_flash b/net-wireless/hackrf-tools/files/hackrf_easy_flash new file mode 100755 index 000000000000..3c802b440fac --- /dev/null +++ b/net-wireless/hackrf-tools/files/hackrf_easy_flash @@ -0,0 +1,161 @@ +#!/bin/sh + +DFU_MODE=0 +CPLD=0 + +get_dfu() { + if [ -r "/usr/share/hackrf/hackrf_one_usb.dfu" ]; then + ram_firmware="/usr/share/hackrf/hackrf_one_usb.dfu" + else + printf "Unable to find hackrf_one_usb.dfu in the search path\n" + exit 1 + fi + export ram_firmware +} + +get_cpld() { + if [ -r "/usr/share/hackrf/hackrf_cpld_default.xsvf" ]; then + cpld="/usr/share/hackrf/hackrf_cpld_default.xsvf" + else + printf "Unable to find default.xsvf in the search path\n" + exit 1 + fi + export cpld +} + +usage() { + printf "hackrf_easy_flash list\n" + printf "hackrf_easy_flash upgrade\n" +} + +if [ -z "${1}" ]; then + usage + exit 0 +fi + +list_firmware() { + if [ ${DFU_MODE} = 1 ]; then + if [ -z "${ram_firmware}" ]; then + get_dfu + fi + printf "Best DFU found: ${ram_firmware}\n" + fi + printf "Available firmware options:\n" + if [ -r "/usr/share/hackrf/hackrf_one_usb.bin" ]; then + printf "hackrf (default)\n" + fi + if [ -r "/usr/share/hackrf/portapack-h1-firmware.bin" ]; then + printf "portapack (--portapack)\n" + fi + if [ -r "/usr/share/hackrf/portapack-h1-havoc.bin" ]; then + printf "portapack-havoc (--havoc)\n" + fi +} + +#parse args +while [ -n "${1}" ]; do + case $1 in + -h|--help) + usage + exit 0 + ;; + list|--list) + list_firmware + exit 0 + ;; + update|--update|upgrade|--upgrade|hackrf|--hackrf) + firmware="/usr/share/hackrf/hackrf_one_usb.bin" + TARGET=hackrf + shift + ;; + portapack|--portapack) + firmware="/usr/share/hackrf/portapack-h1-firmware.bin" + TARGET=portapack + shift + ;; + havoc|--havoc) + firmware="/usr/share/hackrf/portapack-h1-havoc.bin" + TARGET=havoc + shift + ;; + cpld|--cpld) + CPLD=1 + get_cpld + shift + ;; + dfu|--dfu) + DFU_MODE=1 + get_dfu + shift + ;; + --) + shift + break + ;; + *) + break + ;; + esac +done + +if [ -z "${firmware}" ]; then + firmware="/usr/share/hackrf/hackrf_one_usb.bin" + TARGET="hackrf" +fi + +if [ ! -r "${firmware}" ]; then + printf "Unable to find or read ${firmware}\n" + printf "Please ensure the requested firmware is installed and readable\n" + exit 1 +fi + +if [ "${CPLD}" = 1 ] && [ "${TARGET}" != "hackrf" ]; then + printf "To update the CPLD you must use the stock hackrf firmware or do this update manually\n" + printf "Try \"$(basename $0) --cpld && $(basename $0) ${TARGET}\"\n" + exit 1 +fi + +if [ ${DFU_MODE} = 1 ]; then + printf "Preparing to reset hackrf with DFU ${ram_firmware}\n" + printf "Then flashing with ${firmware}\n\n" + printf "Hold down the HackRF's DFU button (the button closest to the antenna jack)\n" + printf "then plug the HackRF into a USB port on your computer.\n" + printf "After the HackRF is plugged in, you may release the DFU button.\n" + printf "Press any key to continue or ^c to abort\n" + read + if ! dfu-util --device 1fc9:000c --download "${ram_firmware}" --reset; then + printf "dfu-util reported failure, quitting\n" + exit 1 + fi + sleep 2s +else + if hackrf_info | grep -q 'No HackRF boards found.'; then + printf "No hackrf found, please ensure you are in hackrf mode or try --dfu\n" + exit 1 + fi +fi +if hackrf_spiflash -w "${firmware}"; then + sleep 3s + hackrf_spiflash -R + sleep 3s +else + printf "hackrf_spiflash reported failure, quitting\n" + exit 1 +fi +if [ "${CPLD}" = 1 ]; then + #printf "To update the cpld, please reset your hackrf into it's new firmware before updating the cpld\n" + #printf "Please reset your hackrf by pressing the button furthest from the antenna or power cycling it.\n" + #printf "Press any key to continue or ^c to abort\n" + #read + if hackrf_cpldjtag -x "${cpld}"; then + sleep 3s + hackrf_spiflash -R + else + printf "hackrf_cpldjtag reported failure\n" + exit 1 + fi +fi +if [ "${TARGET}" = "hackrf" ]; then + hackrf_info +fi +printf "If you saw no errors, you are up to date with the requested firmware\n" diff --git a/net-wireless/hackrf-tools/hackrf-tools-2018.01.1.ebuild b/net-wireless/hackrf-tools/hackrf-tools-2018.01.1-r1.ebuild index 8e2e2ed538cf..077393444eb7 100644 --- a/net-wireless/hackrf-tools/hackrf-tools-2018.01.1.ebuild +++ b/net-wireless/hackrf-tools/hackrf-tools-2018.01.1-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -30,6 +30,7 @@ RDEPEND="${DEPEND}" src_install() { cmake-utils_src_install + dosbin "${FILESDIR}/hackrf_easy_flash" if [[ ${PV} != "9999" ]] ; then insinto /usr/share/hackrf newins "${WORKDIR}/hackrf-${PV}/firmware-bin/hackrf_jawbreaker_usb.bin" hackrf_jawbreaker_usb-${PV}.bin @@ -41,6 +42,7 @@ src_install() { ln -s hackrf_one_usb-${PV}.bin "${ED}/usr/share/hackrf/hackrf_one_usb.bin" ln -s hackrf_one_usb-${PV}.dfu "${ED}/usr/share/hackrf/hackrf_one_usb_ram.dfu" ln -s hackrf_one_usb-${PV}.dfu "${ED}/usr/share/hackrf/hackrf_one_usb.dfu" + ln -s hackrf_cpld_default-${PV}.xsvf "${ED}/usr/share/hackrf/hackrf_cpld_default.xsvf" else ewarn "The compiled firmware files are only available in the versioned releases, you are on your own for this." fi |