#!/bin/bash # flash2minix.sh is a script for flashing a recovery.img to a Minix NEO X5 Mediaplayer # No warranty for damages, use at your own risk # Diese Script kann recovery.img Dateien auf einen Minix NEO X5 Mediaplayer flashen. # Ich übernehme keine Verantwortung für Schäden am Gerät. Benutzung auf eigene Gefahr! # Machine-Model: NEO-X5-116A # Machine-ID: 007 # Manufactorer: RK30SDK # # Partitionmap # Partition @Addr length # misc 0x2000 0x2000 # kernel 0x4000 0x6000 # boot 0xA000 0x8000 # recovery 0x12000 0x8000 # backup 0x1A000 0xC0000 # cache 0xDA000 0x40000 # userdata 0x11A000 0x800000 # kpanic 0x91A000 0x2000 # system 0x91C000 0x100000 # syntax: rkflashtool w ADDR LEN < IMG_NAME.img # example: flash w 0x12000 0x8000 < recovery.img RED='\e[1;31m' GREEN='\e[1;32m' NC='\e[0m' if [ -f recovery.img ]; then echo -e "${RED}ACHTUNG: Die Startwerte MÜSSEN korrekt sein!${NC}" echo "Wenn die Adresse oder der Offset falsch ist, dann kann das Gerät beschädigt werden!" echo "Lese Speicher von Minix aus!!" sudo ./rkflashtool r 0x0 0x1 > read.img echo -e "Dump-Format: ${GREEN}OFFSET@ADRESSE(NAME)${NC}" echo -e "Dump des Minix-Speichers:${RED} \c" cat read.img | strings | grep --color -Po '(?<=\(boot\)\,).*(?=\(backup)' | grep -Po '^.*(?=\,)' echo -e "${NC}Ermittelte Werte für den Flash-Vorgang:" offset=$(cat read.img | strings | grep -Po '(?<=\(boot\)\,).*(?=\(recovery)' | grep -o '^0x[0-9]\{8\}') addr=$(cat read.img | strings | grep -Po '(?<=\(boot\)\,).*(?=\(recovery)' | grep -o '0x[0-9]\{8\}$') rm read.img echo "Ermittelte Werte für recovery.img:" echo -e "Größe Image : ${GREEN}$offset${NC}" echo -e "Start-Adresse : ${GREEN}$addr${NC}" echo -e "${GREEN}Verwende folgenden Befehl zum Flashen:${RED}" echo -e "${RED}./rkflashtool w $addr $offset < recovery.img${NC}" read -p "Parameter korrekt? [j|N]" choice case "$choice" in j|J ) echo -e "\n${RED}!!Gerät nicht abschalten schreibe image!!${NC}" echo -e "./rkflashtool w $addr $offset < recovery.img" sudo ./rkflashtool w $addr $offset < recovery.img ;; * ) echo -e "Nichts passiert. ${GREEN}OK${NC}." ;; esac else echo -e "Es muss zunächst ein kernel übersetzt werden und eine gültige ${GREEN}recovery.img${NC} Datei existieren," echo "um dieses Skript zu nutzen!" fi