Skip to content

Instantly share code, notes, and snippets.

@dd5md
Created June 8, 2024 09:34
Show Gist options
  • Save dd5md/80515fdf18a4c9fd7fc534886b263ca4 to your computer and use it in GitHub Desktop.
Save dd5md/80515fdf18a4c9fd7fc534886b263ca4 to your computer and use it in GitHub Desktop.
MMDVM HS_DUAL_HAT Installer
#!/bin/bash
# Configure Latest Version
FW_VERSION="v1.6.1"
# Firmware Filename
FW_FILENAME="mmdvm_hs_dual_hat_fw.bin"
# Download latest Firmware
echo "Downloading firmware..."
curl -s -A "WPSD Modem FW Update Invocation (server-side)" -OL https://wpsd-swd.w0chp.net/WPSD-SWD/MMDVM_HS-Firmware_Latest-Compiled/raw/tag/$FW_VERSION/$FW_FILENAME
# Download STM32F10X_Lib
if [ ! -d "./STM32F10X_Lib/utils" ]; then
env GIT_HTTP_CONNECT_TIMEOUT="10" env GIT_HTTP_USER_AGENT="WPSD Modem FW Update Invocation (server-side)" git clone https://wpsd-swd.w0chp.net/WPSD-SWD/STM32F10X_Lib.git &> /dev/null
fi
# Configure vars depending on OS
if [ $(uname -s) == "Linux" ]; then
if [ $(uname -m) == "x86_64" ]; then
echo "Linux 64-bit detected"
DFU_RST="./STM32F10X_Lib/utils/linux64/upload-reset"
DFU_UTIL="./STM32F10X_Lib/utils/linux64/dfu-util"
ST_FLASH="./STM32F10X_Lib/utils/linux64/st-flash"
STM32FLASH="./STM32F10X_Lib/utils/linux64/stm32flash"
elif [ $(uname -m) == "aarch64" ] ; then
echo "Linux 64-bit ARM (aarch64) detected"
DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset"
DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util"
ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash"
STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash"
elif [ $(uname -m) == "armv7l" ]; then
echo "Linux ARM (armv7l) detected"
DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset"
DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util"
ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash"
STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash"
elif [ $(uname -m) == "armv6l" ]; then
echo "Linux ARM (armv6l) detected"
DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset"
DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util"
ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash"
STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash"
else
echo "Linux 32-bit detected"
DFU_RST="./STM32F10X_Lib/utils/linux/upload-reset"
DFU_UTIL="./STM32F10X_Lib/utils/linux/dfu-util"
ST_FLASH="./STM32F10X_Lib/utils/linux/st-flash"
STM32FLASH="./STM32F10X_Lib/utils/linux/stm32flash"
fi
fi
if [ $(uname -s) == "Darwin" ]; then
echo "macOS detected"
DFU_RST="./STM32F10X_Lib/utils/macosx/upload-reset"
DFU_UTIL="./STM32F10X_Lib/utils/macosx/dfu-util"
ST_FLASH="./STM32F10X_Lib/utils/macosx/st-flash"
STM32FLASH="./STM32F10X_Lib/utils/macosx/stm32flash"
fi
# Stop MMDVMHost Process to free Serial Port
sudo killall MMDVMHost >/dev/null 2>&1
# Upload the Firmware
eval sudo $STM32FLASH -v -w $FW_FILENAME -g 0x0 -R -i 20,-21,21:-20,21 /dev/ttyAMA0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment