1#!/usr/bin/env bash 2############################################################################### 3# 4# Copyright (C) 2009-2013 Nintendo. All rights reserved. 5# 6# These coded instructions, statements, and computer programs contain 7# proprietary information of Nintendo of America Inc. and/or Nintendo 8# Company Ltd., and are protected by Federal copyright law. They may 9# not be disclosed to third parties or copied or duplicated in any form, 10# in whole or in part, without the prior written consent of Nintendo. 11# 12############################################################################### 13 14################################################################################ 15# cafe_nand2pcfs 16# This script enables a CAT_DEV to boot from PCFS. It must not be executed 17# directly from the bash command prompt. Instead, invoke this using: 18# source update2pcfs 19################################################################################ 20source cafe_utils 21 22############################################################################### 23# compute_flat_version 24############################################################################### 25 26compute_flat_version() 27{ 28 IFS="." 29 local v=( $1 ) 30 echo $((${v[0]} * 1000000 + ${v[1]} * 10000 + ${v[2]} * 1000 + ${v[3]})) 31} 32 33################################################################################ 34# main 35################################################################################ 36call_mionps=${1:-1} 37 38# Bash_sourced_check 0 `basename "$BASH_SOURCE"` update2pcfs 39rval=$? 40if [ $rval == 0 ]; then 41 #------------------------------------------------------------------------------ 42 #---- initialization 43 #------------------------------------------------------------------------------ 44 SCRIPT_EXE_TIMESTAMP=`date +%m_%d_%Y_%H%M%S` 45 LOGDIR="$CAFE_ROOT/${SESSION_PATH_PREFIX}`basename "$0"`/${SCRIPT_EXE_TIMESTAMP}" 46 echo `basename "$0"` 47 echo log directory is $LOGDIR 48 mkdir -p "$LOGDIR" 49 50 # Cleanup any old logs 51 rm -f "$TMP/${SESSION_PATH_PREFIX}cafestop_mion.log" 52 53 CAFESTOP_STATUS=0 54 export _CCRSYSCFG1= #disable 55 Initialize_serial_port_and_directory cafestop 56 #echo CAFE_CONSOLE=$CAFE_CONSOLE 57 58 #------------------------------------------------------------------------------ 59 #---- cafestop 60 #------------------------------------------------------------------------------ 61 echo Executing cafestop"..." 62 source cafestop -hard 1> "$LOGDIR"/cafestop0.txt 2>&1 63 if [ -e "$TMP/${SESSION_PATH_PREFIX}cafestop_mion.log" ]; then 64 mv "$TMP/${SESSION_PATH_PREFIX}cafestop_mion.log" "${LOGDIR}/cafestop0_mion.log" 65 fi 66 if [ $CAFESTOP_STATUS -ne 0 ]; then 67 echo `basename "$0"`: cafestop failure. 68 exit 1 69 fi 70 71 #------------------------------------------------------------------------------ 72 #---- cafeon 73 #------------------------------------------------------------------------------ 74 source hostcheckversion 75 hb_ver_flat=$(compute_flat_version $CAFERUN_HOSTBRIDGE_VERSION) 76 77 echo Executing cafeon"..." 78 set -e 79 if [ $hb_ver_flat -lt $(compute_flat_version 3.2.4.1) ] 80 then 81 cafeon 1> "$LOGDIR"/cafeon.txt 2>&1 82 else 83 cafeon -e nomodecheck 1> "$LOGDIR"/cafeon.txt 2>&1 84 fi 85 if [ -e "$TMP/${SESSION_PATH_PREFIX}cafestop_mion.log" ]; then 86 mv "$TMP/${SESSION_PATH_PREFIX}cafestop_mion.log" "${LOGDIR}/cafeon_mion.log" 87 fi 88 set +e 89 Monitor_For_Output -k "source -p -q /vol/content/" $MONITOR_DEFAULT_TIMEOUT "$LOGDIR" 90 if [ $? -ne 0 ]; then 91 echo `basename "$0"`: monitor failed waiting for cafeon success message. 92 exit 1 93 fi 94 95 #------------------------------------------------------------------------------ 96 #---- recover command 97 #------------------------------------------------------------------------------ 98 echo Executing devkitmsg recover -v"..." 99 set -e 100 devkitmsg recover -v -p $SESSION_LAUNCH_CTRL_PORT 101 set +e 102 Monitor_For_Output -K "WUD_BCMFWCheck" $MONITOR_DEFAULT_TIMEOUT "$LOGDIR" #note: need -K here, not -k 103 if [ $? -ne 0 ]; then 104 echo `basename "$0"`: monitor failed waiting for devkitmsg recover success message. 105 exit 1 106 fi 107 108 #------------------------------------------------------------------------------ 109 #---- update to PCFS 110 #------------------------------------------------------------------------------ 111 echo Executing devkitmsg \'update /vol/storage_hfiomlc01/sys/update/pcfs\' -v"..." 112 set -e 113 devkitmsg 'update /vol/storage_hfiomlc01/sys/update/pcfs' -v -p $SESSION_LAUNCH_CTRL_PORT 114 set +e 115 Monitor_For_Output -k "Update Done, err 0" $MONITOR_DEFAULT_TIMEOUT "$LOGDIR" 116 if [ $? -ne 0 ]; then 117 echo `basename "$0"`: monitor failed waiting for devkitmsg 1st update success message. 118 exit 1 119 fi 120 121 if [ $call_mionps -eq 1 ] 122 then 123 "$CAFE_ROOT\system\bin\tool\mionps" $BRIDGE_CURRENT_IP_ADDRESS 2 -s 2 124 fi 125 126 #------------------------------------------------------------------------------ 127 #---- clr_usrdata command 128 #------------------------------------------------------------------------------ 129 echo Executing devkitmsg clr_usrdata -v"..." 130 set -e 131 devkitmsg clr_usrdata -v -p $SESSION_LAUNCH_CTRL_PORT 132 set +e 133 Monitor_For_Output -k "Done, err 0" $MONITOR_DEFAULT_TIMEOUT "$LOGDIR" 134 if [ $? -ne 0 ]; then 135 echo `basename "$0"`: monitor failed waiting for devkitmsg clr_usrdata success message. 136 exit 1 137 fi 138 139 if [ ! -z $CAFE_TEST_SELF_REFRESH ] 140 then 141 echo Enabling standby mode 142 devkitmsg 'standby_en 1' -v -p $SESSION_LAUNCH_CTRL_PORT 143 fi 144 145 #------------------------------------------------------------------------------ 146 #---- cafestop 147 #------------------------------------------------------------------------------ 148 echo Executing cafestop"..." 149 source cafestop 1> "$LOGDIR"/cafestop1.txt 2>&1 150 if [ -e "$TMP/${SESSION_PATH_PREFIX}cafestop_mion.log" ]; then 151 mv "$TMP/${SESSION_PATH_PREFIX}cafestop_mion.log" "${LOGDIR}/cafestop1_mion.log" 152 fi 153 if [ $CAFESTOP_STATUS -ne 0 ]; then 154 echo `basename "$0"`: cafestop failure. 155 exit 1 156 fi 157 158 #------------------------------------------------------------------------------ 159 #---- success! 160 #------------------------------------------------------------------------------ 161 echo Removing log directory $LOGDIR"..." 162 rm -rf "$LOGDIR" 163 echo `basename "$0"` complete. Exiting with code 0. 164 exit 0 165else 166 echo `basename "$BASH_SOURCE"` error: Format deprecated. Instead, use \"source setbootmode PCFS\". >/dev/stderr 167fi 168unset SCRIPT_IS_SOURCED 169