1920df36d8
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10781 a1c6a512-1295-4272-9138-f99709370657
107 lines
2.2 KiB
Bash
Executable file
107 lines
2.2 KiB
Bash
Executable file
#!/bin/sh
|
|
# __________ __ ___.
|
|
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
# \/ \/ \/ \/ \/
|
|
# $Id$
|
|
#
|
|
# Purpose of this script:
|
|
#
|
|
# Inputs: music player model name and a file name
|
|
#
|
|
# Action: Build a valid mi4 file (prepending and appending magic)
|
|
# Encrypt the file with TEA encryption so that the model's own
|
|
# bootloader accepts this file.
|
|
# Sign the file with a DSA signature the bootloader accepts
|
|
#
|
|
# Output: A built, encrypted and signed mi4 file image.
|
|
#
|
|
# Requirement:
|
|
#
|
|
# This script assumes that you have the mi4code tool in your path, that
|
|
# you have the environment variable MI4CODE pointing to the tool or that you
|
|
# have it in the same dir that you invoke this script with.
|
|
#
|
|
# mi4 info and tool are here: http://daniel.haxx.se/sansa/mi4.html
|
|
#
|
|
|
|
mkmi4=$0
|
|
target=$1
|
|
input=$2
|
|
output=$3
|
|
|
|
# scan the $PATH for the given command
|
|
findtool(){
|
|
file="$1"
|
|
|
|
IFS=":"
|
|
for path in $PATH
|
|
do
|
|
# echo "checks for $file in $path" >&2
|
|
if test -f "$path/$file"; then
|
|
echo "$path/$file"
|
|
return
|
|
fi
|
|
done
|
|
}
|
|
|
|
help () {
|
|
echo "Usage: mi4fix.sh <e200/h10/h10_5gb> <input> <output>"
|
|
exit
|
|
}
|
|
|
|
if test -z "$output"; then
|
|
help
|
|
fi
|
|
|
|
case $target in
|
|
e200)
|
|
sign="yes"
|
|
tea=sansa
|
|
;;
|
|
h10)
|
|
sign="yes"
|
|
tea=20gc_eng
|
|
;;
|
|
h10_5gb)
|
|
buildopt="-2"
|
|
tea=default
|
|
;;
|
|
*)
|
|
echo "unsupported target"
|
|
help
|
|
;;
|
|
esac
|
|
|
|
if test -z "$MI4CODE"; then
|
|
tool=`findtool mi4code`
|
|
if test -z "$tool"; then
|
|
# not in path
|
|
tool=`dirname $mkmi4`/mi4code
|
|
if ! test -f $tool; then
|
|
echo "Couldn't find mi4code"
|
|
exit
|
|
fi
|
|
fi
|
|
else
|
|
tool=$MI4CODE
|
|
fi
|
|
|
|
|
|
|
|
|
|
# build a 010301 version
|
|
#echo "$tool build $input $output.raw"
|
|
$tool build $buildopt $input $output.raw
|
|
# encrypt
|
|
#echo "$tool encrypt $output.raw $output.encrypt $tea"
|
|
$tool encrypt $output.raw $output.encrypt $tea
|
|
# sign
|
|
if test -n "$sign"; then
|
|
#echo "$tool sign $output.encrypt $output"
|
|
$tool sign $output.encrypt $output
|
|
else
|
|
mv $output.encrypt $output
|
|
fi
|