I-Appliance BBS
The Official Source for Internet Appliance Upgrades and Mods
Amazon Honor System Click Here to Pay Learn More
BBS Main List | Sign In | Sign Up | Search | Help | Linux-Hacker.netReply to Thread | Printer |

Home / I-Opener Areas / I-Opener General Posts
Tutorial cycles limited?
I-Opener stopped working

New MessageTutorial cycles limited? (modified 0 times) sanabra2
I recevied my CompUSA I-opener today.
I ran through the tuorial many times.

I took it apart, connected a HD, and it
was successfully detected, but would
not boot (03/23/2000 bios version).

Shortly thereafter, the turtorial would
no longer startup after the boot.

When I TAB to the bios screen I get the
following message after HDD detection on
the same console screen as the bios info.
(ie no graphics display anymore).

"your i-opener is undergoing a necessary update.
This may take thirty minutes or more. If for some
reason the service is not working correctly within
an hour, please contact technical support at
1-800-298-9525 to report the problem."

This unit has never had access to a telephone line during
my posession.

I can no longer use Home - 4 to get to the Qnx command
line (like I did before during the tutorial). I was able
to get to a QNX login: prompt.

I searched the net for references to this message and found
none. Has anyone else heard of anything like this?

On a related note, has anybody created a method to capture
an image of the Sandisk?

When an alternate O/S is booted, is there a way to see the
QNX filesystem on the Sandisk?

If this mode that I have stumbled onto is indeed new
breaking news, please publicize it accordingly.

Thanks

The Great Sanabra - 2

sanabra2@hotmail.com

04-13-2000 16:15:36

New MessageRE:Tutorial cycles limited? (modified 0 times) Dknight
Well,, Imagine the Humor of calling Tech support ,, Hey NPL tech support, WTF? I upgraded to a HD and now I've got problems with your software! How do I fix this?! anyway , once you get your 'downgrade' flash , I'm sure all will be well (unless you were going to use it as intended and was just trying to add more space to save your e-mail!)
04-13-2000 16:59:27

New MessageRE:Tutorial cycles limited? (modified 0 times) sanabra2
DK,

Thanks for the reply.

Upon further investigation, I believe that the
file partion that contained the /app directory
is now corrupted. Perhaps this was the result
of connecting the hdd? If so, I think that some
people would want to know this. I would have
documented and tried to backup the Sandisk before
connecting the hdd if I knew this would happen.

Using as a Linux/Windoze machine is only part of
my motivation. I am also interested in looking
at their implementation of the service.

I found the message that I posted previously located
in the /rc/startup command file. Unfortunately, now that
I have no access to vi, more, etc, it is a pain to read
the file. I might go ahead and let it try to phone home
and repair itself. I will try to block my outgoing caller
id info, but I believe that people who maintain 1-800
nubmers might have add'l access to caller id info than
regular folks. If I want to hook it to the service later,
I can always tell them that I bought it second hand -- "No
sir, I didn't hack that machine".

sanabra - 2

04-13-2000 17:38:30

New MessageRE:Tutorial cycles limited? (modified 0 times) malefactor
Fix it yourself. Trust me, just do it.

If you really care about the sandisk contents, get someone to give you an image.. but you're better off burning the bios image into what you want and booting off a hard drive..

04-13-2000 18:46:53

New MessageRE:Tutorial cycles limited? (modified 0 times) slylock
Profile
My mom's iOpener encountered this same problem ("undergoing a necessary update") after working perfectly for years. She had been picked up by Earthlink when iOpener went under, and all of the features, including email, worked fine until this problem. I helped her switch to a computer, which she still struggles mightily to use, and took her iOpener to try to fix this. I pursued the problem for a long time before finally searching here for "undergoing" and finding this post, which was just what I needed.

I had by this time hooked up a hard drive and copied my mom's Sandisk image off using Dolly, then booted QNX 6.2 off the hard drive and toyed endlessly with the image, without success. I had experimentally replaced many of the files on the image with counterparts from the v2 and anyisp images, and in the process found that np-misc.fs was corrupted, which I figured must have caused the machine to die, but after replacing it and all the other fs files, I still couldn't get the "undergoing" problem to go away.

Thanks to this post, I found what I'd overlooked. I'm including /rc/startup below, where the problem does indeed occur. It does a file system check, and if anything fails (as the corrupted np-misc.fs) would have, it deletes app.version, then enters "undergoing" mode if app.version is missing. Until app.version gets restore, it won't snap out of this. Aha, it never occurred to me there was anything important about that file, but after I copied that file over from the anyisp image, presto, my mom's iOpener works again.

It's curious that the problem occurred for sanabra2 in one day, and on my mom's machine after many years of use. The comments in the file say that corruption can occur if power fails while writing the Sandisk, and of course in the old days it was easy for the iOpener to recover by just copying down fresh copies of all the important files from the mother ship. Now it's a little hard to get fresh files, but not impossible, thanks to pristine images we have.

Here is rc/startup, which does not appear in the clear on the Sandisk image, it must be in one of the fs files that get expanded into ramdisk...

#! /bin/sh
#######################################################################
#
# Generic QNX startup
#
#######################################################################
export TERM=qnxm
export PATH=/bin:/usr/ucb:/dbin:/os
os_version="$OS_VERSION"

. /etc/environment

#
# Check the os file system. We need to do this very early, since
# it seems that chkfsys locks the disk so that even disk reads
# fail. Since vdir hasn't paged in any files, any reads to
# virtual file systems will also fail. We need to "echo n" to
# /bin/chkfsys because, despite the -P flag, chkfsys will prompt
# if the disk is corrupted. Note that we can't use pipes, because
# Pipe hasn't started yet...
#

echo n > /tmp/no
chk_os=0
if test -x /bin/chkfsys
then /bin/chkfsys -r -P -u /os > /tmp/chkfsys.out < /tmp/no
chk_os=$?
fi

#
# In the commands below, you'll see a lot of processes started using
# on -t /dev/null cmd ...
# The effect of this command is to put each process in its own
# process group. This provides some level of isolation between
# processes (so signals aren't erroneously propogated, etc).
#

Dev &

spin -d /dev

#on -t /dev/null Dev.ser -e -b 38400 -m 2f8,3
on -t /dev/null Dev.ser -e -b 9600 -m 2f8,3
on -t /dev/null Dev.ansi -Q -n2
on -t /dev/null Dev.par
on -t /dev/null Pipe

# Need to open /dev/ser1 after starting Dev.ser to direct the
# console away from Proc32 and into the serial port.
# (Otherwise, vdir winds up without fd 1! -- c.f. d.496)

# Use /tmp/startup.log for debugging, /dev/null otherwise
# exec </dev/null >/tmp/startup.log 2>&1
exec </dev/null >/dev/null 2>&1

# get license from flash
license -r

# set clock from hardware clock
rtc hw


#
# Before doing anything with /app, we need to fix what we
# can. Moving this to later in the boot script seems to
# lock up the machine.
#
# Scan the app partition (/dev/hd0t79) looking for I/O errors.
# If we see an error, remove app.version
#

if test -x /bin/catscan
then
catscan -w /dev/hd0t79 > /dev/con1
fi


# Now mount /app, so we can use it as a file system

mount /dev/hd0t79 /app

#
# Check the app file system. We need to "echo n" to /bin/chkfsys
# because, despite the -P flag, chkfsys will prompt if the disk is
# corrupted. We need to wait for the Pipe process to start before
# running the following command.
#
chk_app=0
if test -x /bin/chkfsys -a -f /app/app.version
then /bin/chkfsys -r -P -u /app >> /tmp/chkfsys.out < /tmp/no
chk_app=$?
fi
/bin/rm /tmp/no

if test -f /app/debug.fs
then on -t /dev/null phoenix /os/vdir -X -A vdir.debug -n /dbin -f /app/debug.fs
fi

#######################################################################
#
# Manufacturing test hook
#
#######################################################################

if test -x /app/ztest/startup
then exec /app/ztest/startup
fi

#######################################################################
#
# Netpliance i-opener startup
#
#######################################################################

# ..........................................
#

progress() {
echo "$*"
echo "$*" > /dev/ser1
}

progress "+----------------------------(i-opener)---"
progress "| OS version '$os_version'"


# ..........................................
#
/bin/libshared

hook() {
tag="$1"
progress $tag
list="$(dsmod -d nvram -e startup -a .$tag)"
if test -n "$list"
then nplog np "hook $tag commands: '$list'"
for i in $list
do cmd=$(dsmod -d nvram -e startup -a $i)
if test -n "$cmd"
then nplog np "$tag: command $i: '$cmd'"
eval $cmd
else nplog -error np "$tag: command '$i' not found"
fi
done
fi
}

# ..........................................
#
# OK, this is nasty, I admit it...
# First, start up DSM so we can extract the device id
# from nvram. Note that we don't (nor need to) start it
# in network mode. Then, we kill it, so we can start npmgr
# and friends first.
#

/etc/emgrd
/bin/dsm -L

DEVICE_ID="$(dsmod -d nvram -e device -a .id)"
progress "| Device id '$DEVICE_ID'"
TZ="$(dsmod -d nvram -e logical -a .timeZone)"
if test -z "$TZ"
then TZ=cst06cdt05,M4.1.0/2,M10.5.0/2
fi

export TZ

slay dsm
slay emgrd

export DEVICE_ID

# please clean up references to /*/device...!

echo $DEVICE_ID > /etc/device
prefix -A /os/device=/etc/device

dsm_opt=""
if test -d /app/dsm
then dsm_opt="-C /app/dsm"
else if mkdir /app/dsm
then dsm_opt="-C /app/dsm"
fi
fi

on -p 16 /etc/emgrd
on -t /dev/null -p 15 /bin/npmgr
on -p 14 phoenix /bin/dsm -X $dsm_opt &

hook first

# ..........................................
#
# Start the mount of the vdir that the apps use
#
hook apps0

if test ! -d /app/web
then mkdir /app/web
fi
prefix -A /web=/app/web

if test -x /app/start-apps0
then
/app/start-apps0 &
fi


# ..........................................
#
# Start other OS services
#
on -t /dev/null -p 13 /bin/mark
/etc/watchd

# ..........................................
#
# Start the network

/rc/network.pre
/rc/network.post &


################################################################
#
#
# Start the early apps -- photon, audio, welcome
#
hook apps1
if test -x /app/start-apps1
then
/app/start-apps1 &
fi

# Mount any directories specified in the nvram startup entries
hook cmdList
hook apps2

if test -f /app/app.version
then app_version=$(< /app/app.version)
progress "| APP version '$app_version'"
nplog np "app.version '$app_version'"
if test -x /app/start-apps2
then
/app/start-apps2 &
fi
else progress "| APP version -- NONE"
nplog np "app.version (none)"
echo > /dev/con1
echo Your i-opener is undergoing a necessary update. This may > /dev/con1
echo take 30 minutes or more. If for some reason the service > /dev/con1
echo is not working correctly within an hour, please contact > /dev/con1
echo Technical Support at 1-800-298-9525 to report the problem. > /dev/con1
echo > /dev/con1
fi

# Give the apps all the CPU so they can start
# 30 seconds was determined experimentally for version 1.2 (7/4/2000)
sleep 30

#
# finish checking /app

rm -f /app/.bad_blks
/bin/dcheck -q -m /app > /dev/con1

hook debugStart
#
# Reset the cmos so that boot requires the power switch
# Assumes machines with device id < 500 are not "real"
# device (e.g., they're PCs), so they shouldn't have their
# cmos reset.
#
if test $DEVICE_ID -ge 500
then hook iopener
reset_cmos
else hook victim
fi

#
# nvram logging settings
#
udpDest="$(dsmod -d nvram -e log -a .udpDest 2>/dev/null)"
if [ -n "${udpDest}" ]; then
/bin/nploginit -a -U${udpDest} > /dev/null 2>&1
fi
fileDest="$(dsmod -d nvram -e log -a .fileDest 2>/dev/null)"
if [ -n "${fileDest}" ]; then
/bin/nploginit -a -F${fileDest} > /dev/null 2>&1
fi


#
# Log output produced by chkfsys
#
if test "$chk_app" != 0 -o "$chk_os" != 0
then nplog -crit np $(< /tmp/chkfsys.out)
fi
rm -f /tmp/chkfsys.out


progress "| Time zone '$TZ'"
nplog np "Time zone '$TZ'"
(
t="$(dsmod -d d/deviceCtx -e logical -a .timeZone 2>/dev/null)"
nplog np "tz from deviceCtx '$t'"
) &

if test -d /etc/default
then (echo TZ=$TZ
echo DEVICE_ID=$DEVICE_ID
) > /etc/default/login
fi

if test -f /os/remarks
then progress "+-----------------------------------------"
cat /os/remarks > /dev/ser1
cat /os/remarks
fi

#
# start up debugging framework
#
if test -f /etc/passwd
then tinit -T con1 -t con2 &
l="con"
if test -c /dev/ser1
then stty +opost < /dev/ser1
on -p 17 tinit -T ser1 &
l="$l ser"
fi
fi

hook debugInit
if test -x /rc/debug
then /bin/chkfsys -r -u -P /debug
/rc/debug
l="$l debug"
fi

progress "+------------------------------------<$l>---"

# start inetd if it exists

if test -x /usr/ucb/inetd
then /usr/ucb/inetd &
nplog np telnetd $DEVICE_ID
fi

hook hello
/rc/hello


hook trailer
progress "| updated"
/bin/readbios > /tmp/bios.version
on -t /dev/null -p 14 phoenix /bin/updated -d $DEVICE_ID

# we can sleep here for a minute to allow the apps to have the CPU
# and not be in contention with these processes during boot time
sleep 60

#
# Scan the os partition, looking for I/O errors.
# I/O errors can occur if we lose power during a write.
# We need to run this after npmgr has started, so we
# capture the critsits.
#

if test -x /bin/catscan -a $DEVICE_ID -ge 500
then progress "| catscan /os"
catscan -r /dev/hd0t77 /os/.bad_blks > /tmp/os_errors 2>&1
fi

#
# Scan the app partition (/dev/hd0t79) looking for I/O errors.
# If we see an error, remove app.version
#

if test -x /bin/catscan -a $DEVICE_ID -ge 500
then progress "| catscan /app"
catscan -r /dev/hd0t79 /app/.bad_blks > /tmp/app_errors 2>&1
fi


#
# Log any critsits generated by catscan above
# If catscan failed on /app above, remove /app/app.version. This will
# force update to rebuild the /app partition, and prevent apps from
# starting.
#

if test -s /tmp/os_errors
then nplog -crit np $(< /tmp/os_errors)
progress "+------------------ /os filesystem errors!"
fi

if test -s /tmp/app_errors
then nplog -crit np $(< /tmp/app_errors)
progress "+----------------- /app filesystem errors!"
rm /app/app.version
fi

rm -f /tmp/os_errors
rm -f /tmp/app_errors

progress "+----------------------------------(ok)---"

hook finish

08-03-2005 18:56:14

New MessageRE:Tutorial cycles limited? (modified 0 times) fireworldcomp
Profile | Email
"rm /app/app.version"
Try removing that line from the config file...?
I don't know much about the I-Opener, but maybe that might work.
01-28-2006 11:41:01

Reply to Thread | Printer |
All times are PSTPowered by UltraBoard v1.62



Copyright © 2000, Netmake Inc. All Rights Reserved.
See Terms and Conditions for more information.




i-opener opener laptop notebook computer help drivers dll free windows dos repair fix linux mac macintosh 2000 95 98 nt pc configure hardware software sound video netscape explorer network networking lan wan software cmos fat bios printer card mouse modem ide scsi cd rom controllers scanner tape hard drive cgi scripts source code mp3