Motorola Flash Script

Motorola hat wie viele Anbieter ein Flash-Tool. Das gibt es jedoch nur für Windows.
Für Linux habe ich ein Script erstellt, dass schrittweise eine XML-Datei abarbeitet.
Diese flashfile.xml befindet sich im Verzeichnis der Firmware.

Voraussetzung ist adb und fastboot auf der Linux-Installation. Des weiteren muss die Entwickler-Option frei sein, das USB-Debugging eingeschaltet sein und das Motorola mit USB verbunden sein.
Ein beherztes adb devices im Terminal sollte das Motorola zeigen. Dann kann es los gehen.

Die von der Motorola Firmenseite geladene Firmware.zip wird auf Linux entpackt.

Dann wird der Code des Scripts in einem geeigneten Editor kopiert, mit Namen versehen (zB. flash-moto.sh) und direkt in den Ordner Firmware (in dem sich auch das flashfile.xml befindet) gespeichert.

Dann hangelt man sich mit dem Terminal zum Script und startet mit: sh flash-moto.sh -t
Das Script hat die Option -t. Hiermit wird erst einmal ein Durchlauf getestet.

Sollte die XML gut durchlaufen, dann flashen ohne -t.
Have Fun.

Getestet auf Motorola G2.

#!/bin/sh
# Flash files on Linux
# Usage: sh flash-moto.sh -t flashfile.xml

INFO="press enter to start flash"
MD5SUM="md5sum"

if [ "$1" = "-t" ]; then
	echo "Test the flashfile.xml"
	INFO="press enter to start test"	
fi

if ! hash fastboot 2>/dev/null;then
	echo "fastboot not found. Install fastboot."
	exit 1
fi

if ! hash adb 2>/dev/null;then
	echo "adb not found. Install adb."
	exit 1
fi



echo "++++++++++++++++++++++++++++++++++"
echo "press enter to start in bootloader"
echo "**********************************"
read \n

adb reboot bootloader 2>/dev/null
fastboot oem unlock 2>/dev/null

echo "++++++++++++++++++++++++++"
echo "$INFO"
echo "**************************"
read \n

getValue(){
	val=$(echo "$1" | sed "s/.*$2=\"\([^\"]*\).*/\1/")
	echo "$val" | grep -q " "
	if [ $? -ne 1 ];then
		val=""
	fi
	echo "$val"
}
PATH=.:$PATH

cat "flashfile.xml" | grep step[^s] | while read -r line;do
	MD5=$(getValue "$line" "MD5")
	file=$(getValue "$line" "filename");
	op=$(getValue "$line" "operation");
	part=$(getValue "$line" "partition");
	var=$(getValue "$line" "var");
		if [ "$MD5" != "" ];then
			fileMD5=$($MD5SUM "$file" | sed 's/ \(.*\)//');
			if [ "$MD5" != "$fileMD5" ];then
				echo "$file: MD5 mismatch."
				exit 1;
			fi
		fi
		cmd=$(echo fastboot "$op" "$part" "$file" "$var" | sed -e 's/[[:space:]]/ /g')
		
		if [ "$1" = "-t" ]; then 
			echo $cmd
		else
			$cmd
		fi
		
	done

if [ "$1" = "-t" ]; then  
		echo "\nsuccess"
		echo "start script without Option -t\n"
	else
		echo "++++++++++++++++++++++++++"
		echo "press enter to reboot"
		echo "**************************"
		read \n
		fastboot reboot
fi