66aa00d3e0
This is an improvement for the special mode present in the samsung ypr0 target. Apart adding new useful functionalities, it fixes a random disconnection bug, solved by debouncing and fully support to YP-R1 target. This opens also the possibility to interface this operating mode to rockbox USB functionality. Change-Id: Id70541541fcfaa1234328485fab0696a3bd491c9
118 lines
2.8 KiB
Bash
Executable file
118 lines
2.8 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
|
|
######################################################################
|
|
# __________ __ ___.
|
|
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
# \/ \/ \/ \/ \/
|
|
#
|
|
# * Script to patch an unpacked Samsung YP-R0 firmware file */
|
|
# Copyright (C) 2011 Thomas Martitz
|
|
# Copyright (C) 2013 Lorenzo Miori
|
|
######################################################################
|
|
# bail out early
|
|
set -e
|
|
|
|
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
|
|
echo "Usage: $0 <files path> [path to unpacked rom]"
|
|
echo "\t<files path> is expected to have a special resources and rootfs layout"
|
|
exit 1
|
|
fi
|
|
|
|
MODEL="unknown"
|
|
FILES=${1%/}
|
|
FILES=${FILES:-"/"}
|
|
COMMON_FILES="$FILES/common"
|
|
DIR=${2:-"."}
|
|
DIR=${DIR%/}
|
|
ROOTFS=$DIR/rootfs
|
|
CRAMFS=$DIR/cramfs-fsl.rom
|
|
|
|
# sanity checks
|
|
|
|
for subdir in common r0 r1
|
|
do
|
|
if [ ! -d "$FILES/$subdir" ]
|
|
then
|
|
echo "Missing $FILES/$subdir. Invalid $FILES layout."
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
if [ ! -e "$FILES/r1/etc/safemode/cable_detect" ]
|
|
then
|
|
echo "Couldn't find cable_detect binary (try 'make' or select a valid layout directory)"
|
|
exit 1
|
|
fi
|
|
|
|
for image in pre_smode.raw post_smode.raw safemode.raw
|
|
do
|
|
if [ ! -e "$FILES/r1/etc/safemode/$image" ]
|
|
then
|
|
echo "Missing r1 .raw image file (try 'make'): $image"
|
|
exit 1
|
|
fi
|
|
if [ ! -e "$FILES/r0/etc/safemode/$image" ]
|
|
then
|
|
echo "Missing r0 .raw image file (try 'make'): $image"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# this needs to be run as root!
|
|
if [ $(whoami) != "root" ]
|
|
then
|
|
echo "This needs to be run as root"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -e $1 ] || [ ! -e $2 ]; then
|
|
echo "$1 or $2 does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $ROOTFS ] || [ -z $FILES ]; then
|
|
echo "Invalid input directories"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -e $CRAMFS ]; then
|
|
echo "Cramfs image not found (did you extract the firmware?)"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Extracting cramfs image"
|
|
|
|
[ ! -e $ROOTFS ] || rm -R $ROOTFS
|
|
cramfs-1.1/cramfsck -x $ROOTFS $CRAMFS
|
|
|
|
# now we can detect player version
|
|
# NOTE: order is important here, since ironically
|
|
# r1's ROM contains also r0's executables
|
|
if [ -e "$ROOTFS/usr/local/bin/r1" ]
|
|
then
|
|
MODEL="r1"
|
|
else
|
|
if [ -e "$ROOTFS/usr/local/bin/r0" ]
|
|
then
|
|
MODEL="r0"
|
|
fi
|
|
fi
|
|
|
|
echo "$MODEL ROM found."
|
|
|
|
echo "Patching rootfs (common files)"
|
|
echo "cp -r $COMMON_FILES/* $ROOTFS/"
|
|
cp -r $COMMON_FILES/.rockbox $ROOTFS/
|
|
cp -r $COMMON_FILES/* $ROOTFS/
|
|
|
|
echo "Patching rootfs ($MODEL files)"
|
|
MODEL_FILES="$FILES/$MODEL"
|
|
echo "cp -r $MODEL_FILES/* $ROOTFS/"
|
|
cp -r $MODEL_FILES/* $ROOTFS/
|
|
|
|
echo "Packing new cramfs image"
|
|
cramfs-1.1/mkcramfs $ROOTFS $CRAMFS
|