After upgrading to 3011.0, I was pleased that all of my channels and setting stayed, and PVR still worked. However, SamyGO would not boot and ruSamsungTVCommunicator wouldn't connect. Since that was unacceptable, I downgraded to 3005.1. I'm pleased to report that the 0000 firmware worked easily. Otherwise I would have been out of luck since the TV was no longer rooted. One annoying thing is that the 0000 firmware wipes out all settings, but at least the TV works! Once I downgraded to 3005.1, everything worked again except for ssh and ruSamsungTVCommunicator. My cifs mounts were fine, and ftp to the TV was fine too.
Since I could change firmware easily now, I tried 3009.2 and 3011.0. On both of those the mount script on the USB does not run. When I downgrade to 3005.1, it does run. I tried a simple script with just an echo command so I know it's nothing in the script that blocks it. I like using ext3 on my USBs so I can have symbolic links, but I confirmed that the behavior is the same with fat. Also, it behaves the same with hotplug and coldplug. So, without re-rooting, runs the mount script, while 3009.2 and 3011.0 do not.
I think that my next step will be to reformat the rw area in the TV, and try the hotel mode hack on 3011.0. But I thought I would write this to see if anyone has thoughts about this.
Here is my /mtd_rwarea/usb_mount/usb_hotplug.sh file
Code: Select all
#!/bin/sh
##########################################################################
# HOTPLUG Script
# Only USB automount implement
# Auto Mount Program must be existing in both places which are BOOT partition and RFS
# Version 2.4 (2009-11-01) : suport umount, XFS mount flag modified
# Version 2.4.2 (2009-11-13) : Umont not support for internal HDD
# Version 2.4.4 (2009-11-26) : xfs repaire support when xfs mount failed
# Version 2.4.6 (2009-12-04) : unknown device support(for USB2.0 certification)
# Version 2.4.8 (2009-12-16) : exception handling add when detect invalid block or partitions in kernel
# Version 2.5 (2009-12-22) : exception handling for mount error when device resource busy case
# Version 2.5.2 (2009-12-24) : default device name & vendor added
# Version 2.5.4 (2009-12-31) : device connection check at log creating time
###########################################################################
# Setting
# mounted directory : $MOUNTDIR/$PREFIX1 ~ $PREFIX$MAXNUM (ex /usb/usb1 ~ /usb/usb10)
ENABLE=1
DEBUG_MESSAGE=0
MOUNTBASEDIR=/dtv/usb
ACL_PROGRAMDIR=/mtd_rwarea/usb_mount
RFS_PROGRAMDIR=/sbin/usb_mount
MOUNTPROGRAM=usb_mount
CMDPROGRAM=usb_cmd
MOIPCMDPROGRAM=usb_moip_cmd
UNKNOWNDEVPROGRAM=unknownDev_cmd
LOCKFILE=$MOUNTBASEDIR/lock
DEBUG_MESSAGE_FILE=/dtv/usb_message
DEBUG_MODE_FILE=/dtv/debug_on
CHANGE_IOMODE=0
IOSCHEDULE_MODE=anticipatory
SCSIPATH=/sys/block
IO_MODE_FILE=/dtv/anticipatory_on
# Input argument
ACTION=$1
DEVPATH=$2
PRODUCT=$3
INTERFACE=$4
TYPE=$5
# Program Directory setting
if [ -f $ACL_PROGRAMDIR/$MOUNTPROGRAM ]; then
PROGRAMDIR=$ACL_PROGRAMDIR
else
PROGRAMDIR=$RFS_PROGRAMDIR
fi
# Debug Mode setting
if [ -f $DEBUG_MODE_FILE ]; then
DEBUG_MESSAGE=1
fi
# Mode setting for IO Scheduler with usb storage
if [ -f $IO_MODE_FILE ]; then
CHANGE_IOMODE=1
fi
if [ "$ENABLE" -eq 1 ]
then
# RUN
CLASS=`echo $DEVPATH | sed 's/^\///g' | sed 's/\/.*//g'`
if [ "$CLASS" = "block" ]
then
DEVICE=`echo $DEVPATH | sed 's/^\/[^\/]*\///g' | sed 's/\/.*//g'`
PARTITION=`echo $DEVPATH | sed 's/^\/[^\/]*\///g' | sed 's/^[^\/]*\///g'`
if [ -e $MOUNTBASEDIR/$PARTITION/mount.sh ]; then
chmod 777 $MOUNTBASEDIR/$PARTITION/mount.sh
sh +x $MOUNTBASEDIR/$PARTITION/mount.sh $MOUNTBASEDIR/$PARTITION
fi
$PROGRAMDIR/$CMDPROGRAM $ACTION $DEVICE $PARTITION
if [ $DEBUG_MESSAGE -eq 1 ]; then
echo ">> MSC Hotplug Message : \"$ACTION\" \"$DEVPATH\" \"$PRODUCT\" \"$INTERFACE\" \"$TYPE\"" >> $DEBUG_MESSAGE_FILE
echo ">> MSC Hotplug Message : $PROGRAMDIR/$CMDPROGRAM $ACTION $DEVICE $PARTITION" >> $DEBUG_MESSAGE_FILE
fi
if [ ! -f $LOCKFILE ]; then
mkdir -p $MOUNTBASEDIR
touch $LOCKFILE
$PROGRAMDIR/$MOUNTPROGRAM
fi
if [ $CHANGE_IOMODE -eq 1 ]; then
echo $IOSCHEDULE_MODE > $SCSIPATH/$DEVICE/queue/scheduler
if [ $DEBUG_MESSAGE -eq 1 ]; then
echo ">> MSC Hotplug Message : set $IOSCHEDULE_MODE mode with $DEVICE" >> $DEBUG_MESSAGE_FILE
fi
fi
else
if [ $DEBUG_MESSAGE -eq 1 ]; then
echo ">> Hotplug Message : \"$ACTION\" \"$DEVPATH\" \"$PRODUCT\" \"$INTERFACE\" \"$TYPE\"" >> $DEBUG_MESSAGE_FILE
fi
if [ "$ACTION" = "moip_add" ]; then
if [ $DEBUG_MESSAGE -eq 1 ]; then
echo ">> Hotplug Message : $PROGRAMDIR/$MOIPCMDPROGRAM $ACTION $DEVPATH" >> $DEBUG_MESSAGE_FILE
fi
PARTITION=$PRODUCT
mkdir -p $MOUNTBASEDIR
$PROGRAMDIR/$MOIPCMDPROGRAM $ACTION $DEVPATH $PARTITION
elif [ "$ACTION" = "moip_remove" ]; then
if [ $DEBUG_MESSAGE -eq 1 ]; then
echo ">>Hotplug Message : $PROGRAMDIR/$MOIPCMDPROGRAM $ACTION $DEVICE" >> $DEBUG_MESSAGE_FILE
fi
mkdir -p $MOUNTBASEDIR
$PROGRAMDIR/$MOIPCMDPROGRAM $ACTION $DEVPATH
elif [ "$ACTION" = "unknown_dev_add" ]; then
if [ $DEBUG_MESSAGE -eq 1 ]; then
echo ">> Hotplug Message : $PROGRAMDIR/$UNKNOWNDEVPROGRAM $ACTION $DEVPATH" >> $DEBUG_MESSAGE_FILE
fi
PARTITION=$PRODUCT
mkdir -p $MOUNTBASEDIR
$PROGRAMDIR/$UNKNOWNDEVPROGRAM $ACTION $DEVPATH $PARTITION
elif [ "$ACTION" = "unknown_dev_remove" ]; then
if [ $DEBUG_MESSAGE -eq 1 ]; then
echo ">> Hotplug Message : $PROGRAMDIR/$UNKNOWNDEVPROGRAM $ACTION $DEVPATH" >> $DEBUG_MESSAGE_FILE
fi
mkdir -p $MOUNTBASEDIR
$PROGRAMDIR/$UNKNOWNDEVPROGRAM $ACTION $DEVPATH
fi
fi
fi
I figured out the problem with ssh was due to my own mixup with ip addresses and passwords. The problem with why ruSamsungTVCommunicator stopped working I didn't figure out, but I upgraded from v 4.13 to 4.18 and it's working now. I plan to try changing firmware again before messing with hotel hack.
update:
I tried the update again, and it looks to me like the script /mtd_rwarea/usb_mount/usb_hotplug.sh really does not execute in 3011.0. I put some echo s in it, and they don't show. However, when I return to 3005.1, the script is still there, and works fine. It looks to me that the widget hack does not survive an upgrade to 3011.0.
update:
I realized that I could use ftp and ssh to put files into /mtd_rwarea/usb_mount without going through all of the complexities of the Hotel mode hack. So since I already had rooted 3005.1 via Widget hack, I created the following files.
/mtd_rwarea/usb_mount/usb_cmd:
Code: Select all
#!/bin/sh
if [ "$1" = "mount" ] ; then
if [ -f /dtv/usb/$3/mount.sh ] ; then
sh +x /dtv/usb/$3/mount.sh
fi
fi
/sbin/usb_mount/usb_cmd $1 $2 $3 $4 $5 $6 $7
Code: Select all
#!/bin/sh
/sbin/usb_mount/usb_mount $1 $2 $3 $4 $5 $6 $7
Code: Select all
-rwxr-xr-x 1 root 0 328 Jan 1 1980 usb_cmd
-rwxr-xr-x 1 root 0 4331 Jan 1 1980 usb_hotplug.sh
-rwxr-xr-x 1 root 0 120 Jan 1 1980 usb_mount
Now, I modified the USB to contain mount.sh:
Code: Select all
#!/bin/sh
BASEDIR="${0%/*}"
$BASEDIR/.SamyGO/rcSGO $BASEDIR/.SamyGO >/dev/null 2>&1 &
What's particularly interesting about this method, is that it can be used to root any firmware version without using the Import/Export channel list portion of the Hotel mode hack. For example, to hack 3011.0, use the 0000 firmware to downgrade to 3005.1, root via Widget hack, copy the files I described above, and then upgrade back to 3011.0.