#!/bin/bash # How to run this script # sudo curl https://www.bi7jta.org/files/MMDVM_Firmware/repeater_HAT/set_GPIO_standalone_upgrade_repeater_FW_M17_12MHz.sh.txt | sudo sh # Change firmware to your own build file if necessary mmdvm_f4_iz8gur_m17.hex sudo mount -o remount,rw / ; cd /home/pi-star hex_file="mmdvm_f4_m17_build20230606.hex" #必须加上,否则无法写入估计,只写入0% echo "hex_file:${hex_file}" rm -f ./${hex_file} curl -OL https://www.bi7jta.org/files/MMDVM_Firmware/repeater_HAT/${hex_file}; curl -OL https://www.bi7jta.org/files/MMDVM_Firmware/repeater_HAT/stm32flashV5; sudo chmod +x stm32flashV5; echo "Stopping Pi-Star Services..." sudo systemctl stop pistar-watchdog.timer sudo systemctl stop pistar-watchdog.service sudo systemctl stop mmdvmhost.timer sudo systemctl stop nextiondriver.service #Must stop NextionDriver sudo systemctl stop mmdvmhost.service sleep 1 echo "Killing any remaining MMDVMHost processes..." sudo killall MMDVMHost sudo killall MMDVMHost_NoOLED sudo killall MMDVMHost_Adafruit echo "Starting Flashing..." echo "20" > /sys/class/gpio/export echo "21" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio20/direction echo "out" > /sys/class/gpio/gpio21/direction #####执行到这一步,进入reset状态,PWR/COS灯亮 echo "0" > /sys/class/gpio/gpio21/value #(21写入低电平) echo "1" > /sys/class/gpio/gpio20/value #(20写入高电平) #等待1s 中继板电容充分放电 #whait enough to discharge C8 sleep 1 echo "1" > /sys/class/gpio/gpio21/value #再将21写入高电平,进入刷机状态,标志“ACT红灯亮” #230对应树莓派20 #whait enough to charge C8 sleep 1 #####注意:b5有些板子,无法进入刷机状态,如果 -R -i 20,-21,21:-20,-21,21 /dev/ttyAMA0; 无法刷,这种方法也不行 echo “现在:GPIO20,G PIO21所有脚处于高电平,开始写固件...” echo "Flashing RPi3B 4B ..." sudo /home/pi-star/stm32flashV5 -v -w /home/pi-star/${hex_file} -R /dev/ttyAMA0; sleep 1 ########以下是GPIO复位,避免重启才生效########## echo "0" > /sys/class/gpio/gpio21/value #229对应树莓派21 echo "0" > /sys/class/gpio/gpio20/value #230对应树莓派20 #whait enough to discharge C8 sleep 1 ##这里gpio21高电平就重置,所有灯全部亮了 ,要复位,需要将GPIO21 20都设置为0,再将GPIO21置为1 echo "1" > /sys/class/gpio/gpio21/value #230对应树莓派20 #whait enough to charge C8 sleep 1 echo "in" > /sys/class/gpio/gpio20/direction #230对应树莓派20 echo "in" > /sys/class/gpio/gpio21/direction #229对应树莓派21 echo "20" > /sys/class/gpio/unexport #230对应树莓派20 echo "21" > /sys/class/gpio/unexport #229对应树莓派21 echo "Starting Pi-Star Services..." sudo mount -o remount,ro / sudo systemctl start pistar-watchdog.timer sudo systemctl start pistar-watchdog sudo systemctl start mmdvmhost.timer sudo systemctl start mmdvmhost echo "Finnished..."