Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/data/data/com.termux/files/usr/bin/bash
- info(){
- case "${1}" in
- "" | "--help" | "-h" ) echo -e "Użycie: `basename ${0}` <plik_firmware.uf2>\n\n[RP w trybie bootloadera]:\nPrzytrzymaj chwilę przycisk BOOT[SEL] podczas [re]startu."; exit 0 ;;
- esac
- if ! [[ -f "${1}" && "${1}" == *.[uU][fF]2 ]]; then echo "[BŁĄD]: podaj prawidłowy plik firmware w formacie \"uf2\""; exit 1; fi
- if [[ "`xxd -ps -l 8 ${1}`" != "5546320a57515d9e" ]]; then echo "[BŁĄD]: plik \"${1}\" posiada niewłaściwy nagłówek \"uf2\""; exit 1; fi
- }
- depends(){
- declare -A app=( ["blkid"]="blk-utils" ["findmnt"]="util-linux" ["sudo"]="tsu" ["xxd"]="xxd" )
- for k in "${!app[@]}"; do if command -v "${k}" > /dev/null 2>&1; then unset "app[$k]"; fi; done
- if [ ${#app[@]} -gt 0 ]; then echo -e "[BŁĄD]: brak pakietów (${!app[@]}), aby zainstalować wpisz: \"pkg i ${app[@]}\""; exit 1; fi
- unset app
- }
- set_vars(){
- FW_FILE="`realpath -q ${1}`"
- TMPDIR="${TMPDIR:-/tmp}"
- RP_DIR="${TMPDIR}/raspberry_firmware_flash"
- }
- find_rp(){
- echo -n ">> wykrywam RP w trybie bootloadera ... "
- RP_DEV="`sudo blkid -l -n vfat -o device -t LABEL=RPI-RP2`"
- if [ -z "${RP_DEV}" ]; then echo "[BŁĄD]"; exit 1; else echo -e "[OK]\n>> RP widoczne jako \"${RP_DEV}\""; fi
- }
- mount_rp(){
- if ! check_mnt; then
- mkdir_rp
- echo -n ">> montuję RP ... "
- if ! sudo mount -t vfat "${RP_DEV}" "${RP_DIR}"; then echo "[BŁĄD]"; exit 1; else echo "[OK]"; fi
- else
- echo ">> katalog RP jest już zamontowany, nie montuję ponownie ..."
- fi
- }
- umount_rp(){
- echo -n ">> odmontowuję ... "; sudo umount -q "${RP_DIR}" > /dev/null 2>&1
- if [ $? -eq 0 ]; then echo "[OK]"; else echo "[BŁĄD]"; fi
- }
- copy_firmware(){
- echo -n ">> kopiuję firmware ... "
- sudo cp -f "${FW_FILE}" "${RP_DIR}/" > /dev/null 2>&1
- if [ $? -eq 0 ]; then echo "[OK]"; else echo "[BŁĄD]"; fi
- }
- mkdir_rp(){
- mkdir -p "${RP_DIR}" > /dev/null 2>&1
- }
- check_mnt(){
- if [ -z "${RP_DEV}" ]; then return 1; else findmnt "${RP_DEV}"; fi > /dev/null 2>&1
- }
- clean(){
- rm -fr "${RP_DIR}" > /dev/null 2>&1
- }
- on_exit(){
- if check_mnt; then umount_rp; clean; fi
- }
- test_sudo(){
- if [ `sudo id -u` -ne 0 ]; then "[BŁĄD]: \"sudo\" nie działa poprawnie"; exit 1; fi
- }
- trap on_exit EXIT
- depends
- info "${1}"
- test_sudo
- set_vars "${1}"
- find_rp
- mount_rp
- copy_firmware
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement