Samsung YP-R0/YP-R1 Safe Mode improvement
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
|
|
@ -1,20 +1,41 @@
|
||||||
DEFINES=
|
.PHONY: all clean dirs bmp2rb
|
||||||
CC=gcc
|
CFLAGS += -O1 -g -std=c99 -W -Wall $(DEFINES)
|
||||||
LD=gcc
|
PROGS = bmp2rb fwcrypt fwdecrypt
|
||||||
CFLAGS=-g -std=c99 -W -Wall $(DEFINES)
|
CROSS_COMPILE = arm-ypr0-linux-gnueabi-
|
||||||
LDFLAGS=
|
R1_SAFEMODE_DIR = files/r1/etc/safemode
|
||||||
BINS=fwcrypt fwdecrypt
|
R0_SAFEMODE_DIR = files/r0/etc/safemode
|
||||||
|
DIRS = $(R1_SAFEMODE_DIR) $(R0_SAFEMODE_DIR)
|
||||||
|
R1_IMAGES = $(subst .bmp,.raw,$(addprefix $(R1_SAFEMODE_DIR)/,$(notdir $(wildcard files/images/r1/*.bmp))))
|
||||||
|
R0_IMAGES = $(subst .bmp,.raw,$(addprefix $(R0_SAFEMODE_DIR)/,$(notdir $(wildcard files/images/r0/*.bmp))))
|
||||||
|
BMP2RB = ../../tools/bmp2rb
|
||||||
|
|
||||||
all: $(BINS)
|
all: $(R1_SAFEMODE_DIR)/cable_detect $(PROGS) $(R1_IMAGES) $(R0_IMAGES)
|
||||||
|
$(MAKE) -C cramfs-1.1
|
||||||
%.o: %.c
|
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
fwdecrypt: fwdecrypt.o common.o ../../tools/fwpatcher/md5.o
|
fwdecrypt: fwdecrypt.o common.o ../../tools/fwpatcher/md5.o
|
||||||
$(LD) -o $@ $^ $(LDFLAGS)
|
|
||||||
|
|
||||||
fwcrypt: fwcrypt.o common.o ../../tools/fwpatcher/md5.o
|
fwcrypt: fwcrypt.o common.o ../../tools/fwpatcher/md5.o
|
||||||
$(LD) -o $@ $^ $(LDFLAGS)
|
|
||||||
|
$(BMP2RB):
|
||||||
|
$(MAKE) -C ../../tools/ bmp2rb
|
||||||
|
|
||||||
|
$(R1_SAFEMODE_DIR)/cable_detect: cable_detect.c $(R1_SAFEMODE_DIR)
|
||||||
|
$(CROSS_COMPILE)$(CC) $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(R1_SAFEMODE_DIR)/%.raw: files/images/r1/%.bmp $(BMP2RB) $(R1_SAFEMODE_DIR)
|
||||||
|
$(BMP2RB) -r -f 9 $< > $@
|
||||||
|
|
||||||
|
$(R0_SAFEMODE_DIR)/%.raw: files/images/r0/%.bmp $(BMP2RB) $(R0_SAFEMODE_DIR)
|
||||||
|
$(BMP2RB) -r -f 9 $< > $@
|
||||||
|
|
||||||
|
$(DIRS):
|
||||||
|
$(SILENT)mkdir -p $@
|
||||||
|
|
||||||
|
dirs: $(DIRS)
|
||||||
|
|
||||||
|
bmp2rb: $(BMP2RB)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -fr *.o $(BINS)
|
$(MAKE) -C cramfs-1.1 clean
|
||||||
|
rm -f *.o fwdecrypt fwcrypt
|
||||||
|
rm -rf $(R1_SAFEMODE_DIR)/../../etc $(R0_SAFEMODE_DIR)/../../etc
|
||||||
|
|
|
||||||
63
utils/ypr0tools/cable_detect.c
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
*
|
||||||
|
* Samsung YP-R1 runtime USB cable detection
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Lorenzo Miori
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define IOCTL_PMU_MAGIC 'A'
|
||||||
|
|
||||||
|
#define E_IOCTL_PMU_GET_BATT_LVL 0
|
||||||
|
#define E_IOCTL_PMU_GET_CHG_STATUS 1
|
||||||
|
#define E_IOCTL_PMU_IS_EXT_PWR 2
|
||||||
|
#define E_IOCTL_PMU_STOP_CHG 3
|
||||||
|
#define E_IOCTL_PMU_START_CHG 4
|
||||||
|
#define E_IOCTL_PMU_IS_EXT_PWR_OVP 5
|
||||||
|
#define E_IOCTL_PMU_LCD_DIM_CTRL 6
|
||||||
|
#define E_IOCTL_PMU_CORE_CTL_HIGH 7
|
||||||
|
#define E_IOCTL_PMU_CORE_CTL_LOW 8
|
||||||
|
#define E_IOCTL_PMU_TSP_USB_PWR_OFF 9
|
||||||
|
|
||||||
|
#define IOCTL_PMU_GET_BATT_LVL _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_GET_BATT_LVL)
|
||||||
|
#define IOCTL_PMU_GET_CHG_STATUS _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_GET_CHG_STATUS)
|
||||||
|
#define IOCTL_PMU_IS_EXT_PWR _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_IS_EXT_PWR)
|
||||||
|
#define IOCTL_PMU_STOP_CHG _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_STOP_CHG)
|
||||||
|
#define IOCTL_PMU_START_CHG _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_START_CHG)
|
||||||
|
#define IOCTL_PMU_IS_EXT_PWR_OVP _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_IS_EXT_PWR_OVP)
|
||||||
|
#define IOCTL_PMU_LCD_DIM_CTRL _IOW(IOCTL_PMU_MAGIC, E_IOCTL_PMU_LCD_DIM_CTRL, int)
|
||||||
|
#define IOCTL_PMU_CORE_CTL_HIGH _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_CORE_CTL_HIGH)
|
||||||
|
#define IOCTL_PMU_CORE_CTL_LOW _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_CORE_CTL_LOW)
|
||||||
|
#define IOCTL_PMU_TSP_USB_PWR_OFF _IO(IOCTL_PMU_MAGIC, E_IOCTL_PMU_TSP_USB_PWR_OFF)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is a very simple program that runs on device.
|
||||||
|
* It returns error code either 0 when (power/usb) cable
|
||||||
|
* is not connected or >= 1 if connected.
|
||||||
|
*/
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
int state = -1;
|
||||||
|
int dev = open("/dev/r1Pmu", O_RDONLY);
|
||||||
|
state = ioctl(dev, IOCTL_PMU_IS_EXT_PWR);
|
||||||
|
close(dev);
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
@ -15,8 +15,8 @@ hwclock -s
|
||||||
alias ls='ls --color=auto'
|
alias ls='ls --color=auto'
|
||||||
alias ll='ls -l --color=auto'
|
alias ll='ls -l --color=auto'
|
||||||
|
|
||||||
# Start with lorenzo92's safe mode
|
# Start with safe mode
|
||||||
SCRIPT="/etc/mods/safe_mode.sh"
|
SCRIPT="/etc/safemode/smode"
|
||||||
if [ -f $SCRIPT ]
|
if [ -f $SCRIPT ]
|
||||||
then
|
then
|
||||||
/bin/sh $SCRIPT
|
/bin/sh $SCRIPT
|
||||||
|
|
@ -29,24 +29,16 @@ then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e "/mnt/media1/r0" ]
|
# Ironically, r1's ROM contains a lot of r0's executables, including the main one.
|
||||||
|
# So we need to check against r1 before!
|
||||||
|
if [ -e "/usr/local/bin/r1" ]
|
||||||
then
|
then
|
||||||
MAINFILE="/mnt/media1/r0"
|
MAINFILE="/usr/local/bin/r1"
|
||||||
elif [ -f "/mnt/media0/r0" ]
|
|
||||||
then
|
|
||||||
# copy to media1 since USB wouldn't work
|
|
||||||
cp /mnt/media0/r0 /mnt/media1/r0_media0
|
|
||||||
if [ "$?" = "0" ]
|
|
||||||
then # perhaps cp failed due to insufficient storage or so
|
|
||||||
MAINFILE="/mnt/media1/r0_media0"
|
|
||||||
else
|
|
||||||
MAINFILE="/usr/local/bin/r0"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
MAINFILE="/usr/local/bin/r0"
|
MAINFILE="/usr/local/bin/r0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Parameters for r0
|
# Parameters for the application
|
||||||
MAINFILE_ARGV="Application AppMain"
|
MAINFILE_ARGV="Application AppMain"
|
||||||
|
|
||||||
# source the rockbox loader script
|
# source the rockbox loader script
|
||||||
250
utils/ypr0tools/files/common/etc/safemode/smode
Executable file
|
|
@ -0,0 +1,250 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# __________ __ ___.
|
||||||
|
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
# \/ \/ \/ \/ \/
|
||||||
|
#
|
||||||
|
# * Safe Mode for Samsung YP-R0 / YP-R1 *
|
||||||
|
# * Copyright (C) 2013 Lorenzo Miori and VanniX
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# 0 = R0 ; 1 = R1
|
||||||
|
PLATFORM=0
|
||||||
|
BUTTON_DEVICE="/dev/r0Btn"
|
||||||
|
PMK=$(echo -e -n "\x01") # same for both devices
|
||||||
|
STORAGES="/dev/stl3,/dev/stl2,/dev/mmcblk0"
|
||||||
|
|
||||||
|
MODE="normal"
|
||||||
|
|
||||||
|
if [ $# -eq 1 ]
|
||||||
|
then
|
||||||
|
MODE=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# rather simple but effective check
|
||||||
|
# different key codes to trigger safe mode
|
||||||
|
if [ -e "/usr/local/bin/r1" ]
|
||||||
|
then
|
||||||
|
# running on YP-R1 model
|
||||||
|
BACK=$(echo -e -n "\x02")
|
||||||
|
PLATFORM=1
|
||||||
|
BUTTON_DEVICE="/dev/r1Button"
|
||||||
|
STORAGES="/dev/stl3,/dev/stl2"
|
||||||
|
else
|
||||||
|
BACK=$(echo -e -n "\x08")
|
||||||
|
PLATFORM=0
|
||||||
|
BUTTON_DEVICE="/dev/r0Btn"
|
||||||
|
STORAGES="/dev/stl3,/dev/stl2,/dev/mmcblk0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
power_pressed()
|
||||||
|
{
|
||||||
|
VAR=$(dd if=$BUTTON_DEVICE bs=4 count=1)
|
||||||
|
[[ "$VAR" = "$PMK" ]]
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
cable_disconnected()
|
||||||
|
{
|
||||||
|
if [ $PLATFORM -eq 0 ]
|
||||||
|
then
|
||||||
|
/usr/local/bin/minird 0x0a | grep -q 0x00
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
/etc/safemode/cable_detect
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
enable_display()
|
||||||
|
{
|
||||||
|
echo -n "0" > /sys/devices/platform/afe.0/bli
|
||||||
|
echo -n "1" > /sys/class/graphics/fb0/blank
|
||||||
|
echo -n "0" >> /sys/class/graphics/fb0/blank
|
||||||
|
echo -n "1" > /sys/devices/platform/afe.0/bli
|
||||||
|
}
|
||||||
|
|
||||||
|
display_image()
|
||||||
|
{
|
||||||
|
cat $1 > "/dev/fb0"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $MODE != "forced" ]
|
||||||
|
then
|
||||||
|
KEY=$(dd if=$BUTTON_DEVICE bs=4 count=1)
|
||||||
|
if [[ "$KEY" != "$BACK" ]]; then
|
||||||
|
# do not enter safe mode and continue normal boot
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Here we entered safe mode, so first clean the display
|
||||||
|
# and turn on backlight at minimum level
|
||||||
|
enable_display
|
||||||
|
|
||||||
|
# there are different ROMs around...
|
||||||
|
if [ -e "/etc/safemode/safemode.raw" ]
|
||||||
|
then
|
||||||
|
DefIMG="/etc/safemode/safemode.raw"
|
||||||
|
else
|
||||||
|
DefIMG="/etc/mods/safe_mode.raw"
|
||||||
|
fi
|
||||||
|
RbtIMG="/etc/safemode/post_smode.raw"
|
||||||
|
PreIMG="/etc/safemode/pre_smode.raw"
|
||||||
|
|
||||||
|
NOUSB=true
|
||||||
|
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
|
||||||
|
display_image $PreIMG
|
||||||
|
|
||||||
|
while $NOUSB
|
||||||
|
do
|
||||||
|
|
||||||
|
# User aborts safe mode before mounting anything, just exit
|
||||||
|
# and continue normal boot
|
||||||
|
if power_pressed
|
||||||
|
then
|
||||||
|
sleep 1
|
||||||
|
if power_pressed
|
||||||
|
then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
echo "USB not connected - Waiting"
|
||||||
|
else
|
||||||
|
sleep 1
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
echo "USB first check OK - Waiting"
|
||||||
|
else
|
||||||
|
sleep 1
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
echo "USB second check OK - Waiting"
|
||||||
|
else
|
||||||
|
NOUSB=false
|
||||||
|
USB=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
while $NOUSB
|
||||||
|
do
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
echo "USB not connected - Waiting"
|
||||||
|
else
|
||||||
|
sleep 1
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
echo "USB first check OK - Waiting"
|
||||||
|
else
|
||||||
|
NOUSB=false
|
||||||
|
USB=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
display_image $DefIMG
|
||||||
|
|
||||||
|
echo "Enabling usb storage..."
|
||||||
|
lsmod | grep g_file_storage
|
||||||
|
if [ $? == 0 ]
|
||||||
|
then
|
||||||
|
umount /mnt/media1/dev/gadget
|
||||||
|
fi
|
||||||
|
|
||||||
|
umount /mnt/media1
|
||||||
|
umount /mnt/media0
|
||||||
|
|
||||||
|
lsmod | grep rfs
|
||||||
|
if [ $? == 0 ]
|
||||||
|
then
|
||||||
|
rmmod rfs
|
||||||
|
fi
|
||||||
|
|
||||||
|
lsmod | grep g_file_storage
|
||||||
|
if [ $? == 0 ]
|
||||||
|
then
|
||||||
|
rmmod gadgetfs
|
||||||
|
rmmod g_file_storage
|
||||||
|
rmmod arcotg_udc
|
||||||
|
fi
|
||||||
|
|
||||||
|
lsmod | grep g_serial
|
||||||
|
if [ $? == 0 ]
|
||||||
|
then
|
||||||
|
rmmod g_serial
|
||||||
|
fi
|
||||||
|
|
||||||
|
lsmod | grep g_file_storage
|
||||||
|
if [ $? != 0 ]
|
||||||
|
then
|
||||||
|
modprobe g-file-storage file=$STORAGES removable=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SAFE=true
|
||||||
|
while $SAFE
|
||||||
|
do
|
||||||
|
if power_pressed
|
||||||
|
then
|
||||||
|
sleep 1
|
||||||
|
if power_pressed
|
||||||
|
then
|
||||||
|
SAFE=false
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Removing loaded modules..."
|
||||||
|
rmmod g_file_storage
|
||||||
|
rmmod arcotg_udc
|
||||||
|
|
||||||
|
display_image $RbtIMG
|
||||||
|
|
||||||
|
USB=true
|
||||||
|
|
||||||
|
while $USB
|
||||||
|
do
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
sleep 1
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
sleep 1
|
||||||
|
if cable_disconnected
|
||||||
|
then
|
||||||
|
USB=false
|
||||||
|
else
|
||||||
|
echo "USB connected - Waiting"
|
||||||
|
USB=true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "USB connected - Waiting"
|
||||||
|
USB=true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "USB connected - Waiting"
|
||||||
|
USB=true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "USB connected - Waiting"
|
||||||
|
USB=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
#power key pressed for almost 2 sec and cable disconnected. Power off!
|
||||||
|
exit 1
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# YP-R0 Safe Mode!!
|
|
||||||
# - Part of the "Device Rescue Kit", modded ROM v2.20 and onwards
|
|
||||||
# Version: v0.3
|
|
||||||
# v0.2 - initial version
|
|
||||||
# v0.3 - USB cable check implemented
|
|
||||||
# by lorenzo92 aka Memory
|
|
||||||
# memoryS60@gmail.com
|
|
||||||
|
|
||||||
CustomIMG="/mnt/media1/safe_mode.raw"
|
|
||||||
DefIMG="/etc/mods/safe_mode.raw"
|
|
||||||
|
|
||||||
timer=0
|
|
||||||
# Seconds before turning the device OFF
|
|
||||||
timeout=2
|
|
||||||
|
|
||||||
shutdown () {
|
|
||||||
sync
|
|
||||||
reboot
|
|
||||||
}
|
|
||||||
|
|
||||||
cableDaemon () {
|
|
||||||
cd /usr/local/bin
|
|
||||||
while [ 1 ]
|
|
||||||
do
|
|
||||||
if [ $timer -gt $timeout ]
|
|
||||||
then
|
|
||||||
shutdown
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ./minird 0x0a | grep -q 0x00
|
|
||||||
then
|
|
||||||
timer=$(($timer+1))
|
|
||||||
else
|
|
||||||
timer=0
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Back button is a \x08\x00\x00\x00 string...
|
|
||||||
# ...since bash removes null bytes for us, we must only care the single byte
|
|
||||||
var=$(dd if=/dev/r0Btn bs=4 count=1)
|
|
||||||
# Here a workaround to detect \x08 byte :S
|
|
||||||
var2=$(echo -e -n "\x08")
|
|
||||||
if [[ "$var" = "$var2" ]]
|
|
||||||
then
|
|
||||||
echo "Safe mode (USB) activated..."
|
|
||||||
# Put the backlight at the minimum level: no energy waste, please ;)
|
|
||||||
# Using low level interface
|
|
||||||
|
|
||||||
cd /usr/local/bin
|
|
||||||
./afewr 0x1b 0x3 0x8
|
|
||||||
|
|
||||||
# Long press reset time 5 secs
|
|
||||||
[ -e /etc/mods/reset_time_mod.sh ] && /bin/sh /etc/mods/reset_time_mod.sh
|
|
||||||
|
|
||||||
# Clear the screen and show a nice picture :D
|
|
||||||
|
|
||||||
echo -n "1" > /sys/class/graphics/fb0/blank
|
|
||||||
echo -n "0" >> /sys/class/graphics/fb0/blank
|
|
||||||
# echo -n "1" > /sys/class/graphics/fb2/blank
|
|
||||||
# echo -n "0" >> /sys/class/graphics/fb2/blank
|
|
||||||
if [ -e $CustomIMG ]
|
|
||||||
then
|
|
||||||
cat $CustomIMG > "/dev/fb0"
|
|
||||||
else
|
|
||||||
cat $DefIMG > "/dev/fb0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Here the real USB connection stuff
|
|
||||||
# This is slightly modified by me; it was contained in the cramfs shipped with
|
|
||||||
# YP-R0 opensource package...
|
|
||||||
|
|
||||||
lsmod | grep g_file_storage
|
|
||||||
if [ $? == 0 ]
|
|
||||||
then
|
|
||||||
umount /mnt/media1/dev/gadget
|
|
||||||
fi
|
|
||||||
#if [ -d /mnt/media0 ]
|
|
||||||
#then
|
|
||||||
umount /mnt/media1
|
|
||||||
umount /mnt/media0
|
|
||||||
#umount /mnt/mmc
|
|
||||||
#fi
|
|
||||||
lsmod | grep rfs
|
|
||||||
if [ $? == 0 ]
|
|
||||||
then
|
|
||||||
rmmod rfs
|
|
||||||
fi
|
|
||||||
lsmod | grep g_file_storage
|
|
||||||
if [ $? == 0 ]
|
|
||||||
then
|
|
||||||
rmmod gadgetfs
|
|
||||||
rmmod g_file_storage
|
|
||||||
rmmod arcotg_udc
|
|
||||||
fi
|
|
||||||
lsmod | grep g_file_storage
|
|
||||||
if [ $? != 0 ]
|
|
||||||
then
|
|
||||||
modprobe g-file-storage file=/dev/stl3,/dev/stl2,/dev/mmcblk0 removable=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Let's implement the check if usb cable is still inserted or not...
|
|
||||||
cableDaemon
|
|
||||||
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
BIN
utils/ypr0tools/files/images/r0/post_smode.bmp
Normal file
|
After Width: | Height: | Size: 225 KiB |
BIN
utils/ypr0tools/files/images/r0/pre_smode.bmp
Normal file
|
After Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 225 KiB After Width: | Height: | Size: 225 KiB |
BIN
utils/ypr0tools/files/images/r1/post_smode.bmp
Normal file
|
After Width: | Height: | Size: 281 KiB |
BIN
utils/ypr0tools/files/images/r1/pre_smode.bmp
Normal file
|
After Width: | Height: | Size: 281 KiB |
BIN
utils/ypr0tools/files/images/r1/safemode.bmp
Normal file
|
After Width: | Height: | Size: 281 KiB |
|
|
@ -11,19 +11,21 @@
|
||||||
#
|
#
|
||||||
# * Script to patch an unpacked Samsung YP-R0 firmware file */
|
# * Script to patch an unpacked Samsung YP-R0 firmware file */
|
||||||
# Copyright (C) 2011 Thomas Martitz
|
# Copyright (C) 2011 Thomas Martitz
|
||||||
|
# Copyright (C) 2013 Lorenzo Miori
|
||||||
######################################################################
|
######################################################################
|
||||||
# bail out early
|
# bail out early
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
|
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
|
||||||
echo "Usage: $0 <files path> [path to unpacked rom]"
|
echo "Usage: $0 <files path> [path to unpacked rom]"
|
||||||
echo "\t<files path> is expected to have a rootfs layout and to contain"
|
echo "\t<files path> is expected to have a special resources and rootfs layout"
|
||||||
echo "\tonly the files to overwrite (plain cp -r is used)"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
MODEL="unknown"
|
||||||
FILES=${1%/}
|
FILES=${1%/}
|
||||||
FILES=${FILES:-"/"}
|
FILES=${FILES:-"/"}
|
||||||
|
COMMON_FILES="$FILES/common"
|
||||||
DIR=${2:-"."}
|
DIR=${2:-"."}
|
||||||
DIR=${DIR%/}
|
DIR=${DIR%/}
|
||||||
ROOTFS=$DIR/rootfs
|
ROOTFS=$DIR/rootfs
|
||||||
|
|
@ -31,6 +33,35 @@ CRAMFS=$DIR/cramfs-fsl.rom
|
||||||
|
|
||||||
# sanity checks
|
# 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!
|
# this needs to be run as root!
|
||||||
if [ $(whoami) != "root" ]
|
if [ $(whoami) != "root" ]
|
||||||
then
|
then
|
||||||
|
|
@ -55,13 +86,33 @@ fi
|
||||||
|
|
||||||
echo "Extracting cramfs image"
|
echo "Extracting cramfs image"
|
||||||
|
|
||||||
[ ! -e $ROOTFS ] || rmdir -p $ROOTFS
|
[ ! -e $ROOTFS ] || rm -R $ROOTFS
|
||||||
cramfs-1.1/cramfsck -x $ROOTFS $CRAMFS
|
cramfs-1.1/cramfsck -x $ROOTFS $CRAMFS
|
||||||
|
|
||||||
echo "Patching rootfs"
|
# now we can detect player version
|
||||||
echo "cp -r $FILES/* $ROOTFS/"
|
# NOTE: order is important here, since ironically
|
||||||
cp -r $FILES/.rockbox $ROOTFS/
|
# r1's ROM contains also r0's executables
|
||||||
cp -r $FILES/* $ROOTFS/
|
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"
|
echo "Packing new cramfs image"
|
||||||
cramfs-1.1/mkcramfs $ROOTFS $CRAMFS
|
cramfs-1.1/mkcramfs $ROOTFS $CRAMFS
|
||||||
|
|
|
||||||