From c8e898e8ce3e277c1c861404c4b9d3f933cfe0e9 Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Tue, 21 Feb 2017 12:19:30 -0500 Subject: [PATCH 1/3] this seems a bit nicer, and it handles people changing the firmware names a little bit --- host/bin/switch_to_hackrf | 36 ++++++++++++++++++++++++++++++++++-- host/bin/switch_to_portapack | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/host/bin/switch_to_hackrf b/host/bin/switch_to_hackrf index 78f996ab..37f3ca03 100755 --- a/host/bin/switch_to_hackrf +++ b/host/bin/switch_to_hackrf @@ -6,6 +6,38 @@ 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 -dfu-util --device 1fc9:000c --download hackrf_one_usb_ram.dfu --reset +for i in /usr/share/hackrf/hackrf_one_usb.dfu /usr/share/hackrf/hackrf_one_usb_ram.dfu hackrf_one_usb.dfu; do + if [ -r "${i}" ]; then + ram_firmware="${i}" + break + fi +done + +if [ -n "${ram_firmware}" ]; then + printf "\nFound firmware: ${ram_firmware}\n" + printf "Flashing...\n" +else + printf "Unable to fine firmware to flash, please have hackrf_one_usb.dfu\n" + printf "in current directory or /usr/share/hackrf/\n" + exit 1 +fi + +for i in /usr/share/hackrf/hackrf_one_usb.bin /usr/share/hackrf/hckrf_one_usb_rom_to_ram.bin hackrf_one_usb.bin; do + if [ -r "${i}" ]; then + rom_firmware="${i}" + break + fi +done + +if [ -n "${rom_firmware}" ]; then + printf "\nFound firmware: ${rom_firmware}\n" + printf "Flashing...\n" +else + printf "Unable to fine firmware to flash, please have hackrf_one_usb.bin\n" + printf "in current directory or /usr/share/hackrf/\n" + exit 1 +fi + +dfu-util --device 1fc9:000c --download "${ram_firmware}" --reset sleep 2s -hackrf_spiflash -w hackrf_one_usb_rom_to_ram.bin +hackrf_spiflash -w "${rom_firmware}" diff --git a/host/bin/switch_to_portapack b/host/bin/switch_to_portapack index 41ac8c54..f7c4372d 100755 --- a/host/bin/switch_to_portapack +++ b/host/bin/switch_to_portapack @@ -6,6 +6,38 @@ 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 -dfu-util --device 1fc9:000c --download hackrf_one_usb_ram.dfu --reset +for i in /usr/share/hackrf/hackrf_one_usb.dfu /usr/share/hackrf/hackrf_one_usb_ram.dfu hackrf_one_usb.dfu; do + if [ -r "${i}" ]; then + ram_firmware="${i}" + break + fi +done + +if [ -n "${ram_firmware}" ]; then + printf "\nFound firmware: ${ram_firmware}\n" + printf "Flashing...\n" +else + printf "Unable to fine firmware to flash, please have hackrf_one_usb.dfu\n" + printf "in current directory or /usr/share/hackrf/\n" + exit 1 +fi + +for i in /usr/share/hackrf/portapack-h1-firmware.bin portapack-h1-firmware.bin; do + if [ -r "${i}" ]; then + rom_firmware="${i}" + break + fi +done + +if [ -n "${rom_firmware}" ]; then + printf "\nFound firmware: ${rom_firmware}\n" + printf "Flashing...\n" +else + printf "Unable to fine firmware to flash, please have portapack-h1-firmware.bin\n" + printf "in current directory or /usr/share/hackrf/\n" + exit 1 +fi + +dfu-util --device 1fc9:000c --download "${ram_firmware}" --reset sleep 2s -hackrf_spiflash -w portapack-h1-firmware.bin +hackrf_spiflash -w "${rom_firmware}" From 152fb77d54660a549fcb73af5eff1116314d4faf Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Tue, 21 Feb 2017 23:12:13 -0800 Subject: [PATCH 2/3] bin: fix speeling --- host/bin/switch_to_hackrf | 6 +++--- host/bin/switch_to_portapack | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/host/bin/switch_to_hackrf b/host/bin/switch_to_hackrf index 37f3ca03..511270e9 100755 --- a/host/bin/switch_to_hackrf +++ b/host/bin/switch_to_hackrf @@ -17,12 +17,12 @@ if [ -n "${ram_firmware}" ]; then printf "\nFound firmware: ${ram_firmware}\n" printf "Flashing...\n" else - printf "Unable to fine firmware to flash, please have hackrf_one_usb.dfu\n" + printf "Unable to find firmware to flash, please have hackrf_one_usb.dfu\n" printf "in current directory or /usr/share/hackrf/\n" exit 1 fi -for i in /usr/share/hackrf/hackrf_one_usb.bin /usr/share/hackrf/hckrf_one_usb_rom_to_ram.bin hackrf_one_usb.bin; do +for i in /usr/share/hackrf/hackrf_one_usb.bin /usr/share/hackrf/hackrf_one_usb_rom_to_ram.bin hackrf_one_usb.bin; do if [ -r "${i}" ]; then rom_firmware="${i}" break @@ -33,7 +33,7 @@ if [ -n "${rom_firmware}" ]; then printf "\nFound firmware: ${rom_firmware}\n" printf "Flashing...\n" else - printf "Unable to fine firmware to flash, please have hackrf_one_usb.bin\n" + printf "Unable to find firmware to flash, please have hackrf_one_usb.bin\n" printf "in current directory or /usr/share/hackrf/\n" exit 1 fi diff --git a/host/bin/switch_to_portapack b/host/bin/switch_to_portapack index f7c4372d..81728367 100755 --- a/host/bin/switch_to_portapack +++ b/host/bin/switch_to_portapack @@ -17,7 +17,7 @@ if [ -n "${ram_firmware}" ]; then printf "\nFound firmware: ${ram_firmware}\n" printf "Flashing...\n" else - printf "Unable to fine firmware to flash, please have hackrf_one_usb.dfu\n" + printf "Unable to find firmware to flash, please have hackrf_one_usb.dfu\n" printf "in current directory or /usr/share/hackrf/\n" exit 1 fi @@ -33,7 +33,7 @@ if [ -n "${rom_firmware}" ]; then printf "\nFound firmware: ${rom_firmware}\n" printf "Flashing...\n" else - printf "Unable to fine firmware to flash, please have portapack-h1-firmware.bin\n" + printf "Unable to find firmware to flash, please have portapack-h1-firmware.bin\n" printf "in current directory or /usr/share/hackrf/\n" exit 1 fi From 66d66b57ab8ef89e00a3491532af8c620f20a9e8 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Tue, 21 Feb 2017 23:06:24 -0800 Subject: [PATCH 3/3] HackRF: Update firmware to 2017.02.1 --- firmware/CMakeLists.txt | 2 +- firmware/hackrf_one_usb.dfu | Bin 0 -> 21992 bytes firmware/hackrf_one_usb_ram.dfu | Bin 20484 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 firmware/hackrf_one_usb.dfu delete mode 100644 firmware/hackrf_one_usb_ram.dfu diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt index 371d715b..38e4ea0e 100644 --- a/firmware/CMakeLists.txt +++ b/firmware/CMakeLists.txt @@ -25,7 +25,7 @@ set(COMMON ${PROJECT_SOURCE_DIR}/common) set(CHIBIOS ${PROJECT_SOURCE_DIR}/chibios) set(CHIBIOS_PORTAPACK ${PROJECT_SOURCE_DIR}/chibios-portapack) -set(HACKRF_FIRMWARE_FILENAME hackrf_one_usb_ram.dfu) +set(HACKRF_FIRMWARE_FILENAME hackrf_one_usb.dfu) set(HACKRF_FIRMWARE_IMAGE ${PROJECT_SOURCE_DIR}/${HACKRF_FIRMWARE_FILENAME}) set(HACKRF_CPLD_SVF_FILENAME hackrf_cpld_portapack.svf) diff --git a/firmware/hackrf_one_usb.dfu b/firmware/hackrf_one_usb.dfu new file mode 100644 index 0000000000000000000000000000000000000000..49e0eee10493358a9d2ec6e5068831ee3ba45c7a GIT binary patch literal 21992 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 z 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.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